Pagini recente » Cod sursa (job #1883518) | Cod sursa (job #2346708) | Cod sursa (job #2336597) | Cod sursa (job #182604) | Cod sursa (job #390038)
Cod sursa(job #390038)
#include<stdio.h>
long m,dist;
int n,cont;
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;
dist=a[1].l-a[1].d;
for(i=2;i<=n;i++)
if(a[i].l-a[i].d>dist) cont=i;
dist=0;
for(i=cont;i<=n;i++)
if(dist<a[i].l+a[cont].l+a[i].d-a[cont].d) dist=a[i].l+a[cont].l+a[i].d-a[cont].d;
}
void afisare()
{ freopen("orase.out","w",stdout);
printf("%ld\n",dist);
fclose(stdout);
}
int main()
{ citire();
qsort(a,1,n);
calculeaza();
afisare();
return 0;
}