Я хочу использовать upper_bound для массива пары, и это тоже с помощью функции компаратора, которая сравнивает второй параметр пары.Пожалуйста, помогите.
Код :
bool cmp(const pair<int,int> &p1, const pair<int,int> &p2)
{
return p1.second<p2.second;
}
int subsets(pair<int,int> time[], int p)
{
if(p == 0) return 1;
int j = upper_bound(time, time+p, time[p], cmp) - time;
}
РЕДАКТИРОВАТЬ : я исправилвозвращаемый тип, но я не могу получить то, что хотел в качестве вывода.
У меня есть массив pair<int,int>
с именем time, который содержит время начала и окончания в качестве первого и второго параметра соответственно и отсортирован по времени окончанияНарастающим образом.
В настоящее время я нахожусь по индексу p.Я хочу найти максимальный индекс массива (= j), такой, что time[j].second <= time[p].first
.
Например.
время = {(1,5), (4,7),(6, 12)} и если p = 2 (индексирование на основе 0), то j должно быть = 0 (как 5 <= 6, но 7> 6), но upper_bound дает мне j = 2.
Как я могудостичь этого?