Pagini recente » Cod sursa (job #263733) | Cod sursa (job #942053) | Cod sursa (job #2238441) | Cod sursa (job #2985469) | Cod sursa (job #264961)
Cod sursa(job #264961)
# include <stdio.h>
# include <stdlib.h>
# define n 50001
long M,L[n],N,D[n],j,i;
long long max;
void quick(int st, int dr)
{
long i=st,j=dr,aux,p=D[(st+dr)/2];
if (dr<=st) return;
while (i<=j){
while (D[i]<p) i++;
while (p<D[j]) j--;
if (i<=j) {
aux=D[i];D[i]=D[j];D[j]=aux;
aux=L[i];L[i]=L[j];L[j]=aux;
i++; j--;
}
}
if (st<j) quick(st,j);
if (i<dr) quick(i,dr);
}
int main(){
freopen("orase.in", "r", stdin);
freopen("orase.out", "w", stdout);
scanf("%ld %ld",&M,&N);
for (i=1;i<=N;++i)
scanf("%ld %ld",&D[i],&L[i]);
quick(1,N);
j=1; max=0;
for (i=2;i<=N;++i){
if (max<L[i]+L[j]+abs(D[i]-D[j])) max=L[i]+L[j]+abs(D[i]-D[j]);
if (abs(L[i]-D[i])>abs(L[j]-D[j]))j=i;
}
printf("%lld",max);
return 0;
}