Pagini recente » Cod sursa (job #1040454) | Cod sursa (job #1364476) | Cod sursa (job #2491184) | Cod sursa (job #534329) | Cod sursa (job #657994)
Cod sursa(job #657994)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define nmax 50001
int n,m;
int d[nmax],l[nmax];
void read()
{ int i;
freopen("orase.in","r",stdin);
scanf("%d %d\n",&m,&n);
for(i=1;i<=n;++i)
scanf("%d %d\n",&d[i],&l[i]);
fclose(stdin);
}
void quicksort(int lf, int r)
{ int i,j,mij,z;
i=lf; j=r; mij=d[(i+j)/2];
do
{
while(d[i]<mij)++i;
while(d[j]>mij)--j;
if(i<=j){
z=d[i]; d[i]=d[j]; d[j]=z;
z=l[i]; l[i]=l[j]; l[j]=z;
++i; --j;
}
}
while(i<=j);
if(i<r)quicksort(i,r);
if(lf<j)quicksort(lf,j);
}
int solve()
{ int max,rez,i;
rez=0;
max=l[1]-d[1];
for(i=2;i<=n;++i)
{
if(max+d[i]+l[i]>rez)rez=max+d[i]+l[i];
if(l[i]-d[i]>max)max=l[i]-d[i];
}
return rez;
}
void write(int sol)
{
freopen("orase.out","w",stdout);
printf("%d",sol);
fclose(stdout);
}
int main()
{int sol;
read();
quicksort(1,n);
sol=solve();
write(sol);
return 0;
}