Pagini recente » Cod sursa (job #1161313) | Cod sursa (job #2769965) | Cod sursa (job #3169135) | Cod sursa (job #1052810) | Cod sursa (job #2378789)
#include <fstream>
#include <algorithm>
std::pair<int, int> concerts[100001];
int n, d[100001];
inline int binary_search(int x) {
int r = 0, pas = 1 << 16;
while (pas) {
if (r + pas <= n && concerts[r + pas].first <= x) r += pas;
pas >>= 1;
}
return r;
}
int main() {
std::ifstream in("heavymetal.in");
std::ofstream out("heavymetal.out");
int i;
in >> n;
for (i = 1; i <= n; ++i) in >> concerts[i].second >> concerts[i].first;
std::sort(concerts + 1, concerts + n + 1);
d[1] = concerts[1].first - concerts[1].second;
for (i = 2; i <= n; ++i)
d[i] = std::max(d[i - 1], d[binary_search(concerts[i].second)] + concerts[i].first - concerts[i].second);
out << d[n];
return 0;
}