Pagini recente » Cod sursa (job #2265830) | Cod sursa (job #2332756) | Cod sursa (job #1300041) | Cod sursa (job #587033) | Cod sursa (job #390043)
Cod sursa(job #390043)
#include<stdio.h>
long m,dist,max;
int n;
struct oras { long d,l;
} a[50001];
void citire()
{ int i;
freopen("orase.in","r",stdin);
scanf("%ld%d",&m,&n);
for(i=1;i<=n;i++)
scanf("%ld%ld",&a[i].d,&a[i].l);
fclose(stdin);
}
void qsort(oras a[100],int x,int y)
{ int i,j,p;
oras aux;
if(x<y)
{ i=x-1;
j=y+1;
p=a[(x+y)/2].d;
while(i<j)
{ do i++; while(a[i].d<p);
do j--; while(a[j].d>p);
if(i<j) { aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
qsort(a,x,i-1);
qsort(a,j+1,y);
}
}
void calculeaza()
{ int i,d,maxx;
dist=a[1].l-a[1].d;
for(i=2;i<=n;i++)
{ maxx=0;
d=a[i].l-a[i].d;
if(d<dist) maxx=a[i].l+a[i].d+dist;
else { maxx=a[i].l+a[i].d+d;
dist=d;
}
if(max<maxx) max=maxx;
}
}
void afisare()
{ freopen("orase.out","w",stdout);
printf("%ld\n",max);
fclose(stdout);
}
int main()
{ citire();
qsort(a,1,n);
calculeaza();
afisare();
return 0;
}