Cod sursa(job #1099180)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 5 februarie 2014 17:04:54
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <cstdio>
#include <algorithm>
#define MAXN 50001
#define MAXM 1000001
using namespace std;

int D[MAXM];

int main () {
    FILE *f, *g;
    f = fopen( "orase.in", "r" );
    g = fopen( "orase.out", "w" );

    int dist, len, m, n, h, maxdist, prev;

    fscanf( f, "%d%d", &m, &n );

    for( int i = 0 ; i < n ; ++i ) {
        fscanf( f, "%d%d", &dist, &len );
        D[dist] = max( D[dist], len );
    }

    h = 0;
    maxdist = -1;
    prev = 0;
    for( int i = 0 ; i <= m ; ++i )
        if( D[i] ) {
            if( D[i] + ( i - prev ) + h > maxdist )
                maxdist = D[i] + ( i - prev ) + h;
            if( D[i] > ( i - prev ) + h ) {
                h = D[i];
                prev = i;
            }
        }

    fprintf( g, "%d\n", maxdist );

    fclose( f );
    fclose( g );

    return 0;
}