Cod sursa(job #1880171)
| Utilizator | Data | 15 februarie 2017 16:37:46 | |
|---|---|---|---|
| Problema | Heavy metal | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.66 kb |
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fi("heavymetal.in");
ofstream fo("heavymetal.out");
pair<int,int> S[100001];
int i,n;
int st,dr,mid;
int D[100001];
int main()
{
fi>>n;
for(i=1;i<=n;i++)
fi>>S[i].first>>S[i].second;
sort(S+1,S+n+1);
for(i=1;i<=n;i++)
{
st=0,dr=i-1;
while(st<dr)
{
mid=(st+dr+1)/2;
if(S[mid].second<=S[i].first)
st=mid;
else
dr=mid-1;
}
D[i]=max(D[i-1],D[st]+S[i].second-S[i].first);
}
fo<<D[n];
fi.close();
fo.close();
return 0;
}
