Pagini recente » Cod sursa (job #2948462) | Cod sursa (job #1548011) | Cod sursa (job #2353612) | Cod sursa (job #2421512) | Cod sursa (job #2517140)
#include <fstream>
#include <algorithm>
#define N 100002
using namespace std;
struct bla
{
int x,y;
}v[N];
bool cmp(bla A, bla B)
{
if(A.x==B.x) return (A.y<B.y);
return (A.x<B.x);
}
int din[N];
int srch(int st, int dr, int start)
{
int mij,sol=-1;
while(st<=dr)
{
mij=(st+dr)/2;
if(v[mij].y<=start)///cu cat timpul intre concerte e mai scurt, cu atat se canta mai mult
sol=mij,st=mij+1;
else
dr=mij-1;
}
return sol;
}
int main()
{
ifstream f("heavymetal.in");
ofstream g("heavymetal.out");
int n,found;
f>>n;
for(int i=1;i<=n;++i) f>>v[i].x>>v[i].y;
sort(v+1,v+n+1,cmp);
din[1]=v[1].y-v[1].x;
for(int i=2;i<=n;++i)
{
found=srch(1,i,v[i].x);
if(found==-1)
din[i]=max(din[i-1],v[i].y-v[i].x);
else
din[i]=max(din[i-1],din[found]+v[i].y-v[i].x);
}
g<<din[n];
f.close();
g.close();
return 0;
}