Pagini recente » Cod sursa (job #2389267) | Cod sursa (job #2719982) | Cod sursa (job #2477641) | Cod sursa (job #628961) | Cod sursa (job #319960)
Cod sursa(job #319960)
#include<stdio.h>
#include<algorithm>
using namespace std;
struct ch{long x,y,px,py;}a[100050],aa[200050];
long n,i,j,m,b[100050],nr;
long cmp(ch a,ch b)
{if(a.y<b.y)return 1;
return 0;}
int main()
{
freopen("heavymetal.in","r",stdin);
freopen("heavymetal.out","w",stdout);
scanf("%ld",&n);
for(i=1;i<=n;++i)
scanf("%ld%ld",&a[i].x,&a[i].y),a[i].px=a[i].x,a[i].py=a[i].y,aa[2*i-1].y=a[i].x,aa[2*i].y=a[i].y,aa[2*i].x=i,aa[2*i-1].x=-i;
sort(aa,aa+n*2+1,cmp);
for(i=1;i<=n*2;++i)
{if(aa[i].y>aa[i-1].y)++nr;
if(aa[i].x>0)a[aa[i].x].y=nr;
else a[aa[i].x*(-1)].x=nr;}
sort(a,a+n+1,cmp);
for(i=1;i<=n;++i)
{for(j=a[i-1].y+1;j<=a[i].y;++j)b[j]=b[j-1];
for(j=i;a[j].y==a[i].y;--j)
if(b[a[i].y]<b[a[j].x]+a[j].py-a[j].px)b[a[i].y]=b[a[j].x]+a[j].py-a[j].px;
for(j=i+1;a[j].y==a[i].y;++j)
if(b[a[i].y]<b[a[j].x]+a[j].py-a[j].px)b[a[i].y]=b[a[j].x]+a[j].py-a[j].px;
if(b[a[i].y]>m)m=b[a[i].y];}
printf("%ld",m);
return 0;
}