Pagini recente » Cod sursa (job #2760366) | Cod sursa (job #1718238) | Cod sursa (job #1296964) | Cod sursa (job #661839) | Cod sursa (job #2150045)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("heavymetal.in");
ofstream out("heavymetal.out");
const int N = 100001;
int n, d[N];
pair <int, int> v[N];
bool cond(const pair <int, int> &a, const pair <int, int> &b) {
return (a.second < b.second);
}
int cautbin(int x) {
int r = 0, pas = 1 << 28;
while (pas != 0) {
if (r + pas < x && v[r + pas].second <= v[x].first) {
r += pas;
}
pas >>= 1;
}
return r;
}
int main()
{
in >> n;
for (int i = 1; i <= n; i++) in >> v[i].first >> v[i].second;
in.close();
sort(v + 1, v + n + 1, cond);
for (int i = 1; i <= n; i++) d[i] = max(d[i - 1], v[i].second - v[i].first + d[cautbin(i)]);
out << d[n];
out.close();
}