Cod sursa(job #2811780)

Utilizator teodorescunicolasteodorescu nicolas alexandru teodorescunicolas Data 3 decembrie 2021 08:53:55
Problema Subsecventa de suma maxima Scor 100
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <stdio.h>

FILE *fin, *fout;

int readInt() {
    int ch, res, semn = 1;

    while ( isspace( ch = fgetc( fin ) ) );
    if ( ch == '-' ) {
        semn = -1;
        ch = fgetc( fin );
    }

    res = 0;
    do
        res = 10 * res + ch - '0';
    while ( isdigit( ch = fgetc( fin ) ) );

    return semn * res;
}

int main()
{
    int n, a, b, i, sum, pstart, pend, total, st, dr;
    fin = fopen( "ssm.in", "r" );
    fout = fopen( "ssm.out", "w" );
    n = readInt();
    a = readInt();
    sum = a;
    total = a;
    pstart = pend = 0;
    for ( i = 1; i < n; i++ ) {
        b = readInt();
        if ( sum + b < b ) {
            sum = b;
            st = i;
        } else {
            sum += b;
        }
        dr = i;
        if ( total < sum ) {
            total = sum;
            pstart = st;
            pend = dr;
        }
    }
    fprintf( fout, "%d %d %d", total, pstart + 1, pend + 1 );
    fclose( fin );
    fclose( fout );
    return 0;
}