Cod sursa(job #1743959)

Utilizator Tiberiu02Tiberiu Musat Tiberiu02 Data 19 august 2016 00:13:51
Problema Orase Scor 50
Compilator c Status done
Runda Arhiva de probleme Marime 1.04 kb
# include <stdio.h>
# include <stdlib.h>

# define max( a, b ) ( a > b ? a : b )

# define MAX_M 100000

# define infinit 10000000

int max1[1 + MAX_M];
int max2[1 + MAX_M];

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

    int m, n, i, d, l, max, maxc;

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

    for ( i = 1; i <= m; i ++ )
        max1[i] = max2[i] = -infinit;

    for ( i = 0; i < n; i ++ ) {
        fscanf( fin, "%d%d", &d, &l );

        if ( max1[d] <= l ) {
            max2[d] = max1[d];
            max1[d] = l;
        } else if ( max2[d] < l )
            max2[d] = l;
    }

    max = maxc = -infinit;
    for ( i = 1; i <= m; i ++ ) {
        maxc ++;

        if ( max1[i] + max2[i] > max )
            max = max1[i] + max2[i];
        if ( max1[i] + maxc > max )
            max = max1[i] + maxc;
        if ( max1[i] > maxc )
            maxc = max1[i];
    }

    fprintf( fout, "%d", max );

    fclose( fin );
    fclose( fout );

    return 0;
}