Cod sursa(job #1497642)

Utilizator alexpetrescuAlexandru Petrescu alexpetrescu Data 7 octombrie 2015 01:24:51
Problema Buline Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <cstdio>
#define INF 2000000001
int main(){
    int n, smax, sum, max, sc, s, lt, pozc, a, b, i, pozmax, lmax, t, pozs, ls;
    FILE *fin, *fout;
    fin=fopen("buline.in", "r");
    fout=fopen("buline.out", "w");
    fscanf(fin, "%d", &n);
    smax=-INF;
    sum=0;
    max=-1;
    sc=0;
    s=0;
    t=0;
    lt=0;
    for(i=1; i<=n; i++){
        fscanf(fin, "%d%d", &a, &b);
        if(b==0){
            a=-a;
        }
        if(max<t-s){
            max=t-s;
            pozmax=i;
            lmax=n-i+1+lt;
        }
        s+=a;
        if(t<s){
            t=s;
            lt=i;
        }
        if(sc<0){
            sc=0;
            pozc=i;
        }
        sc+=a;
        if(smax<sc){
            smax=sc;
            pozs=pozc;
            ls=i-pozc+1;
        }
    }
    max+=s;
    if(smax<max){
        smax=max;
        pozs=pozmax;
        ls=lmax;
    }
    fprintf(fout, "%d %d %d\n", smax, pozs, ls);
    fclose(fin);
    fclose(fout);
    return 0;
}