我给了2个向量:
vector<int> arrive;
vector<int> depart;
arrive [i]和depart [i]代表不同人的到达和离开时间。我的任务是发现在任何时间点,人数不得超过K(给定)。
为此,我做了一个vector<pair<int,int>> arr_dep_time
。该数组存储了到达和离开数组的所有点。 pair.first用于存储到达/离开的时间,pair.second用于存储到达点(即0)或出发点(即1)的时间。
然后我使用了std::sort(arr_dep_time.begin(),arr_dep_time.end(),comparator)
我希望如果我有重复的时间,应该将出发时间放在第一位。例如,如果存在{5,0}和{5,1},则应将{5,1}放在{5,0}之前。
因此,我编写了比较器,如下所示:
bool comparator(pair<int,int> p1,pair<int,int> p2){
if(p1.first==p2.first)
return p1.second>p2.second;
return p1.first<p2.first;
}
但是在某些情况下,这给了我错误的结果。 但是,当我把pair.second作为 0:出发 1:到达 并按如下方式编写了comapartor,它给了我正确的结果。
bool comparator(pair<int,int> p2){
if(p1.first==p2.first)
return p1.second<p2.second;
return p1.first<p2.first;
}
谁能告诉我为什么?
我没有包括完整的解决方案。 感觉是必要的。