Pagini recente » Cod sursa (job #556955) | Cod sursa (job #500288) | Cod sursa (job #2067346) | Cod sursa (job #1382567) | Cod sursa (job #2893954)
#include <iostream>
#include <algorithm>
#include <map>
#define lol long long
using namespace std;
FILE *fin = fopen("heavymetal.in", "r");
FILE *fout = fopen("heavymetal.out", "w");
struct point
{
lol a, b;
};
bool f(point p1, point p2)
{
return p1.a < p2.a;
}
point p[100005];
lol points[200005];
lol dp[200005];
map<lol, int> mp;
int main()
{
int n;
fscanf(fin, "%d", &n);
for (int i = 0; i < n; i++)
{
fscanf(fin, "%lld %lld", &p[i].a, &p[i].b);
points[2 * i] = p[i].a;
points[2 * i + 1] = p[i].b;
}
sort(points, points + 2 * n);
int newLen = unique(points, points + 2 * n) - points;
for (int i = 0; i < newLen; i++)
mp[points[i]] = i;
sort(p, p + n, f);
lol maxx = 0;
int last = 0;
for (int i = 1; i <= n; i++)
{
while (last < mp[p[i].a] + 1)
{
dp[last + 1] = dp[last + 1] + dp[last];
last++;
}
dp[mp[p[i].b] + 1] = dp[mp[p[i].a] + 1] + (p[i].b - p[i].a);
maxx = max(maxx, dp[mp[p[i].b] + 1]);
}
fprintf(fout, "%lld\n", maxx);
}