Cod sursa(job #74241)

Utilizator vlad_popaVlad Popa vlad_popa Data 24 iulie 2007 12:58:59
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
using namespace std;

#include <cstdio>
#include <cassert>
#include <string>
#include <algorithm>

#define FIN "orase.in"
#define FOUT "orase.out"
#define NMAX 50001
#define INF 0x3f3f3f3f

int N, M, L[NMAX], D[NMAX], ind[NMAX];

int cmp (const int a, const int b)
{
    if (D[a] == D[b])
        return L[a] < L[b];
     
    return D[a] < D[b];    
}

void read ()
{
    scanf ("%d %d\n", &M, &N);
    
    for (int i = 1; i <= N; ++ i)
        scanf ("%d %d\n", D + i, L + i),
        ind[i] = i;
        
    sort (ind+1, ind+N+1, cmp);        
}

void solve ()
{
    int Dif = L[ind[1]] - D[ind[1]], sol = -INF;
    
    for (int ii = 2; ii <= N; ++ ii)
    {
        int i = ind[ii];
        sol = max (sol, D[i] + L[i] + Dif);
        Dif = max (Dif, L[i] - D[i]);        
    }
            
    printf ("%d\n", sol);
}

int
 main ()
{
    freopen (FIN, "rt", stdin);
    freopen (FOUT, "wt", stdout);
    
    read ();
    solve ();
    
    return 0;
}