Pagini recente » Cod sursa (job #2959544) | Cod sursa (job #676324) | Cod sursa (job #2738757) | Cod sursa (job #415069) | Cod sursa (job #307791)
Cod sursa(job #307791)
#include <stdio.h>
int n,ll[50000],C[50000];
void qsort(long l, long r)
{
long i,j,x,y;
i=l;
j=r;
x=C[(l+r)>>1];
do
{
while ((C[i]<x)&&(i<n)) ++i;
while ((x<C[j])&&(j>1)) --j;
if (i<=j)
{
y=C[i];
C[i]=C[j];
C[j]=y;
y=ll[i];ll[i]=ll[j];ll[j]=y;
++i;
--j;
}
}
while (i<=j);
if (l<j) qsort(l,j);
if (i<r) qsort(i,r);
}
int main()
{int m,i,j;
long long max;
freopen("orase.in","r",stdin);
freopen("orase.out","w",stdout);
scanf("%d %d",&m,&n);
for (i=1;i<=n;i++)
scanf("%d %d",&C[i],&ll[i]);
/*for (i=1;i<n;i++)
for (j=i+1;j<=n;j++)
if (d[i]>d[j])
{m=d[i];d[i]=d[j];d[j]=m;
m=l[i];l[i]=l[j];l[j]=m; }
*/
qsort(1,n);
for (i=2,j=1,max=-1;i<=n;i++)
{
if (ll[i]+C[i]+ll[j]-C[j]>max) max=ll[i]+C[i]+ll[j]-C[j];
if (ll[i]-C[i]>ll[j]-C[j]) j=i;
}
printf("%lld",max);
return 0;}