Cod sursa(job #2693934)

Utilizator LucaMihaiLM10Luca Ilie LucaMihaiLM10 Data 7 ianuarie 2021 16:58:12
Problema Buline Scor 20
Compilator c-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
#define MAX_N 200000
int v[MAX_N], semn[2] = { -1, 1 };
int main() {
    FILE *fin, *fout;
    int n, cul, suma, maxSuma, start, st, dr, i;
    fin = fopen( "buline.in", "r" );
    fscanf( fin, "%d", &n );
    for ( i = 0; i < n; i++ ) {
        fscanf( fin, "%d%d", &v[i], &cul );
        v[i] = v[i] * semn[cul];
    }
    fclose( fin );
    maxSuma = suma = v[0];
    st = dr = start = 0;
    for ( i = 1; i < n; i++ ) {
        if ( suma <= 0 ) {
            suma = 0;
            start = i;
        }
        suma += v[i];
        if ( suma > maxSuma ) {
            maxSuma = suma;
            st = start;
            dr = i;
        }
    }
    i = 0;
    while ( suma > 0 && i < start ) {
        suma += v[i];
        if ( suma > maxSuma ) {
            maxSuma = suma;
            st = start;
            dr = i;
        }
        i++;
    }
    fout = fopen( "buline.out", "w" );
    fprintf( fout, "%d %d %d", maxSuma, st + 1, (dr - st + 1 + n - 1) % n + 1  );
    fclose( fout );
    return 0;
}