Pagini recente » Cod sursa (job #1026470) | Cod sursa (job #1006842) | Cod sursa (job #2047837) | Cod sursa (job #2890633) | Cod sursa (job #3224279)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("heavymetal.in");
ofstream fout("heavymetal.out");
int n,dp[100005];
struct abc{
int a,b;}a[100005];
int comp(abc a,abc b)
{
return a.b<b.b || a.b==b.b && a.a<b.a;
}
int main()
{
fin>>n;
for (int i=1;i<=n;i++)
{
fin>>a[i].a>>a[i].b;
}
sort (a+1,a+n+1,comp);
for (int i=1;i<=n;i++)
{
//cout<<a[i].a<<" "<<a[i].b<<'\n';
int st=1,dr=i,ans=0;
while (st<=dr)
{
int mij=(st+dr)/2;
if (a[mij].b<=a[i].a) st=mij+1,ans=mij;
else dr=mij-1;
}
//cout<<ans<<" ";
for (int j=ans;j<i;j++)
if (a[i].a>=a[j].b) dp[i]=max(dp[i],dp[j]);
dp[i]+=a[i].b-a[i].a;
//cout<<dp[i]<<"\n";
}
fout<<dp[n];
return 0;
}