Pagini recente » Cod sursa (job #1132100) | Cod sursa (job #2716755) | Cod sursa (job #2292266) | Cod sursa (job #1300245)
#include <stdio.h>
#include <stdlib.h>
int d[50001],l[50001],s[50001];
void quicksort(int p,int u)
{
int pivot,j,i,aux,t;
if(p<u)
{
pivot=d[(p+u)/2];
i=p;
j=u;
while(i<=j)
{
while(d[i]<pivot && i<u)
i++;
while(d[j]>pivot && j>p)
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(p<j)
quicksort(p,j);
if(i<u)
quicksort(i,u);
}
}
int main()
{
int m,n,i,nr,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",&d[i],&l[i]);
quicksort(1,n);
for(i=1; i<=n; i++)
{
if(s[i-1]-l[i-1]+d[i]-d[i-1]+l[i]>l[i]+l[i-1]+d[i]-d[i-1])
nr=s[i-1]-l[i-1]+d[i]-d[i-1]+l[i];
else
nr=l[i]+l[i-1]+d[i]-d[i-1];
s[i]=nr;
}
max=0;
for(i=1; i<=n; i++)
if(s[i]>max)
max=s[i];
printf("%d\n",max);
return 0;
}