Pagini recente » Cod sursa (job #2950421) | Cod sursa (job #811617) | Cod sursa (job #1183601) | Cod sursa (job #1601961) | Cod sursa (job #336422)
Cod sursa(job #336422)
#include<stdio.h>
struct vect
{
int d,l;
};
int n;
vect v[65536];
void read()
{
freopen("orase.in","r",stdin);
freopen("orase.out","w",stdout);
scanf("%d",&n);
scanf("%d",&n);
int i;
for(i=1;i<=n;i++)
scanf("%d%d",&v[i].d,&v[i].l);
}
int part(int st, int dr)
{
int i,j,m;
vect aux,p;
m=(st+dr)>>1;
p=v[m];
i=st-1;
j=dr+1;
while(1)
{
do{++i;}while(v[i].d<p.d);
do{--j;}while(v[j].d>p.d);
if(i<j)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
else
return j;
}
}
void quick(int st, int dr)
{
int p;
if(st<dr)
{
p=part(st,dr);
quick(st,p);
quick(p+1,dr);
}
}
void rez()
{
int i,j=1,max=v[j].l-v[j].d,maxim=-1;
for(i=2;i<=n;i++)
{
for(;j<i;j++)
if(v[j].l-v[j].d>max)
max=v[j].l-v[j].d;
if((v[i].l+v[i].d+max)>maxim)
maxim=v[i].l+v[i].d+max;
}
printf("%d\n",maxim);
}
int main()
{
read();
quick(1,n);
rez();
return 0;
}