Cod sursa(job #120314)

Utilizator TabaraTabara Mihai Tabara Data 4 ianuarie 2008 21:33:09
Problema Orase Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;

#define in "orase.in"
#define out "orase.out"

int N, M, MAX;
vector<int> D;
vector<int> L;
vector<int> index;

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

int main()
{
    freopen ( in, "r", stdin );
    freopen ( out, "w", stdout );
    
    int DIST, LUNG, i, j;
    
    scanf( "%d %d", &M, &N );
    for ( i = 1; i <= N; ++i )
    {
        scanf( "%d%d", &DIST, &LUNG );
        D.push_back( DIST );
        L.push_back( LUNG );
        index.push_back( i-1 );
    }
    /*for ( i = 0; i < index.size(); ++i )
        printf( "%d ", index[i] );*/
    sort( index.begin(), index.end(), cmp );
/*    printf( "\n" );
    for ( i = 0; i < index.size(); ++i )
        printf( "%d ", index[i] );*/
    MAX = 0;
    j = L[index[0]] - D[index[0]];
    for ( i = 1; i < index.size(); ++i )
    {
        if ( D[index[i]] + L[index[i]] + j > MAX )
           MAX = D[index[i]] + L[index[i]] + j;
        if ( L[index[i]] - D[index[i]] > j )
           j = L[index[i]] - D[index[i]];
    }
        
    printf( "%d\n", MAX );
    return 0;
}