Pagini recente » Cod sursa (job #1728267) | Cod sursa (job #2303373) | Cod sursa (job #1410562) | Cod sursa (job #2590916) | Cod sursa (job #2965396)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("heavymetal.in");
ofstream fout("heavymetal.out");
int n;
int dp[100005];
struct interv
{
int x, y;
};
interv v[100005];
bool cmp(const interv A, const interv B)
{
if (A.y == B.y)
return A.x < B.x;
return A.y < B.y;
}
int CB(int x, int st, int dr)
{
int sol = 0;
while (st <= dr)
{
int mij = (st + dr) / 2;
if (x >= v[mij].y)
sol = mij, st = mij + 1;
else
dr = mij - 1;
}
return sol;
}
int main()
{
fin >> n;
for (int i = 1; i <= n; i++)
fin >> v[i].x >> v[i].y;
sort(v + 1, v + n + 1, cmp);
for (int i = 1; i <= n; i++)
dp[i] = max(dp[i - 1], dp[CB(v[i].x, 1, i - 1)] + v[i].y - v[i].x);
fout << dp[n];
return 0;
}