Cod sursa(job #2687380)

Utilizator LucaMihaiLM10Luca Ilie LucaMihaiLM10 Data 19 decembrie 2020 22:55:12
Problema Subsecventa de suma maxima Scor 90
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <stdio.h>
#include <ctype.h>
#define BUFSIZE (128 * 1024)
FILE *fin, *fout;
int rpos;
char rbuf[BUFSIZE];
static inline void initRead() {
    fin = fopen( "ssm.in", "r" );
    rpos = BUFSIZE - 1;
}
static inline char readChar() {
    if ( !(rpos = (rpos + 1) & (BUFSIZE - 1)) )
        fread( rbuf, 1, BUFSIZE, fin );
    return rbuf[rpos];
}
int readInt() {
    int ch, res = 0, semn = 1;
    while ( isspace( ch = readChar() ) );
    if ( ch == '-' ) {
        semn = -1;
        ch = readChar();
    }
    do
        res = 10 * res + ch - '0';
    while ( isdigit( ch = readChar() ) );
    return semn * res;
}
int main() {
    int n, a, maxSuma, suma, st, dr, len, i;
    initRead();
    fscanf( fin, "%d%d", &n, &a );
    maxSuma = suma = a;
    st = dr = 1;
    len = 0;
    for ( i = 1; i < n; i++ ) {
        fscanf( fin, "%d", &a );
        if ( suma < 0 )
            suma = len = 0;
        suma += a;
        len++;
        if ( suma > maxSuma ) {
            maxSuma = suma;
            st = i - len + 2;
            dr = i + 1;
        }
    }
    fclose( fin );
    fout = fopen( "ssm.out", "w" );
    fprintf( fout, "%d %d %d", maxSuma, st, dr );
    fclose( fout );
    return 0;
}