Pagini recente » Cod sursa (job #2097396) | Cod sursa (job #542674) | Cod sursa (job #1048540) | Cod sursa (job #485870) | Cod sursa (job #337344)
Cod sursa(job #337344)
#include <stdio.h>
long m,n,i,d[50002],l[50002];
void inter(long x,long m,long y){
long a[50002];
for(i=x;i<=y;i++)a[i]=d[i];
long i1=x;
long i2=m+1;
long k=x-1;
while(i1<=m&&i2<=y)
if(a[i1]<a[i2])
d[++k]=a[i1++];
else
d[++k]=a[i2++];
for(i=i1;i<=m;i++)
d[++k]=a[i];
for(i=i2;i<=y;i++)
d[++k]=a[i];
}
void sort(long x,long y){
if(x!=y){
long m=(x+y)/2;
sort(x,m);
sort(m+1,y);
inter(x,m,y);
}
}
int main(){
FILE *f,*g;
f=fopen("orase.in","r");
g=fopen("orase.out","w");
fscanf(f,"%ld%ld",&m,&n);
for(i=1;i<=n;i++)
fscanf(f,"%ld%ld",&d[i],&l[i]);
sort(1,n);
long mj=1;
long max=l[2]+d[2]+l[1]-d[1];
for(i=3;i<=n;i++){
if(l[i]+d[i]+l[i-1]-d[i-1]>max){
max=l[i]+d[i]+l[i-1]-d[i-1];
mj=i-1;
}
else
if(l[i]+d[i]+l[mj]-d[mj]>max)
max=l[i]+d[i]+l[mj]-d[mj];
}
fprintf(g,"%ld\n",max);
fclose(f);
fclose(g);
return 0;
}