Ближайший слева отрезок, совместимый с jым
Сортирую отрезки по концам:
struct arr {
double begin, end, weight;
};
bool operator< (arr first, arr second) {
return first.end < second.end;
}
sort(vec.begin(), vec.end());
Затем для каждого отрезка нахожу, ближайший слева от него, совместимый с ним.
long int binsearch (vector<arr> & vec, double key, long int left, long int right) {
if (left == right)
return left;
long int mid = left + (right - left) / 2;
if (vec[mid].end > key)
return binsearch(vec, key, left, mid);
else
return binsearch(vec, key, mid+1, right);
}
p[0]=0;
for (int i = 1; i != n; ++i) {
p[i] = binsearch(vec, vec[i].begin, 0, i);
//cout << p[i] << endl;
}
Не могу понять в чем ошибка.
Источник: Stack Overflow на русском