Cod sursa(job #657994)

Utilizator ioalexno1Alexandru Bunget ioalexno1 Data 7 ianuarie 2012 18:52:58
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#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;
}