Cod sursa(job #69736)

Utilizator VmanDuta Vlad Vman Data 4 iulie 2007 01:46:09
Problema Orase Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <stdio.h>
#include <algorithm>
#define Nmax 50000
using namespace std;

int N,M,x[Nmax],i;
long long a[Nmax],d[Nmax],l[Nmax],maxim;

bool cmp(int a,int b)
{
return (d[x[a]]<d[x[b]]);
}

int main()
{
 freopen("orase.in","r",stdin);
 scanf("%d %d",&M,&N);
 for (i=0;i<N;++i)
     {
     scanf("%lld %lld",&d[i],&l[i]);
     x[i]=i;
     }
 fclose(stdin);
 stable_sort(x,x+N,cmp);
 a[0]=l[x[0]];
 for (i=1;i<N-1;++i)
     {
      if (a[i-1]+d[x[i]]-d[x[i-1]]>l[x[i]]) a[i]=a[i-1]+d[x[i]]-d[x[i-1]];
         else a[i]=l[x[i]];
     }
 maxim=l[x[N-1]]+a[N-2]+d[x[N-1]]-d[x[N-2]];
 for (i=N-2;i>1;--i)
     if (l[x[i]]+a[i-1]+d[x[i]]-d[x[i-1]]>maxim) maxim=l[x[i]]+a[i-1]+d[x[i]]-d[x[i-1]];
 freopen("orase.out","w",stdout);
 printf("%lld",maxim);
 fclose(stdout);
 return 0;
}