Pagini recente » Istoria paginii runda/simularea-care-a-spart-globul-pamantesc/clasament | Cod sursa (job #2521793) | Cod sursa (job #1534176) | Cod sursa (job #1760213) | Cod sursa (job #1883991)
#include <cstdio>
#include <algorithm>
using namespace std;
struct me{int l;int r;int d;};
me v[100002];
int cmp(me a,me b)
{
if(a.r<b.r)
return 1;
if(a.r==b.r&&a.l<=b.l)
return 1;
return 0;
}
int mx(int a,int b)
{
if(a>b)
return a;
return b;
}
int main()
{
freopen("heavymetal.in","r",stdin);
freopen("heavymetal.out","w",stdout);
int n,i,a,b,m,pp;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&v[i].l,&v[i].r);
sort(&v[1],&v[n+1],cmp);
for(i=1;i<=n;i++)
{
a=1;
b=i-1;
pp=0;
while(a<=b)
{
m=(a+b)/2;
if(v[m].r<=v[i].l)
a=m+1,pp=m;
else b=m-1;
}
v[i].d=mx(v[i-1].d,v[pp].d+v[i].r-v[i].l);
}
for(i=1;i<=n;i++)
printf("%d ",v[i].d);
return 0;
}