Cod sursa(job #1278768)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 29 noiembrie 2014 13:51:49
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<cstdio>
#include<algorithm>

using namespace std;

FILE *fin = fopen( "orase.in", "r" ), *fout = fopen( "orase.out", "w" );

const int nmax = 50000;
int rez[ nmax + 1 ];
struct str{ int x, y; } v[ nmax + 1 ];

inline int max2( int a, int b ) {
    if ( a < b ) {
        return b;
    }
    return a;
}
bool cmp( str a, str b ) {
    return ( a.x < b.x );
}
int main() {
    int n, m, ans;
    fscanf( fin, "%d%d", &m, &n );
    for( int i = 1; i <= n; ++ i ) {
        fscanf( fin, "%d%d", &v[ i ].x, &v[ i ].y );
    }
    sort( v + 1, v + n + 1, cmp );
    rez[ 1 ] = v[ 1 ].y;
    ans = 0;
    for( int i = 2; i <= n; ++ i ) {
        int x, y;
        x = v[ i - 1 ].y + v[ i ].x - v[ i - 1 ].x + v[ i ].y;
        y = rez[ i - 1 ] - v[ i - 1 ].y + v[ i ].x - v[ i - 1 ].x + v[ i ].y;
        rez[ i ] = max2( x, y );
        ans = max2( ans, rez[ i ] );
    }
    fprintf( fout, "%d\n", ans );
    fclose( fin );
    fclose( fout );
    return 0;
}