Cod sursa(job #1065946)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 23 decembrie 2013 20:49:23
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
//subsir de suma maximala : http://www.infoarena.ro/problema/ssm
#include <cstdio>

int main () {

    FILE *f, *g;
    f = fopen( "ssm.in", "r" );
    g = fopen( "ssm.out", "w" );

    int n, x, ssm, maxssm, inc, sf, maxic, maxsf;

    fscanf( f, "%d%d", &n, &x );
    ssm = x > 0 ? x : 0;
    maxssm = x;
    if( x > 0 ) {
        inc = sf = 0;
        maxic = maxsf = 0;
    }
    else {
        inc = sf = -1;
        maxic = maxsf = -1;
    }

    for( int i = 1; i < n ; ++i ) {
        fscanf( f, "%d", &x );
        ssm += x;
        sf = i;
        if( ssm > maxssm ) {
            maxssm = ssm;
            maxic = inc;
            maxsf = sf;
        }
        if( ssm < 0 ) {
            inc = i + 1;
            ssm = 0;
        }
    }

    fprintf( g, "%d %d %d\n", maxssm, maxic + 1, maxsf + 1 );

    fclose( f );
    fclose( g );

    return 0;
}