Pagini recente » Cod sursa (job #1953370) | Cod sursa (job #2857875) | Cod sursa (job #93168) | Cod sursa (job #3137039) | Cod sursa (job #337349)
Cod sursa(job #337349)
#include <stdio.h>
long m,n,i,d[50002],l[50002];
void inter(long x,long m,long y){
long a[50002],b[50002];
for(i=x;i<=y;i++){a[i]=d[i];b[i]=l[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++];
l[k]=b[i1-1];
}
else{
d[++k]=a[i2++];
l[k]=b[i2-1];
}
for(i=i1;i<=m;i++){
d[++k]=a[i];
l[k]=b[i];
}
for(i=i2;i<=y;i++){
d[++k]=a[i];
l[k]=b[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 max=l[2]+d[2]+l[1]-d[1];
long mj=1;
for(i=3;i<=n;i++){
long m1=l[i]+d[i]+l[i-1]-d[i-1];
long m2=l[i]+d[i]+l[mj]-d[mj];
if(m1>max){
max=m1;
mj=i-1;
}
else
if(m2>max)
max=m2;
else
if(m1>m2) mj=i-1;
}
fprintf(g,"%ld\n",max);
fclose(f);
fclose(g);
return 0;
}