Cod sursa(job #1125009)

Utilizator dyanagGrigore Diana dyanag Data 26 februarie 2014 15:05:40
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <cstdio>

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

int s, nr, l1=1, l2=1, v[6000001], smax, l1m, l2m, nr0, minn=-2147483640;

int main()
{
    int n;
    fscanf(f, "%d", &n);
    for(int i=1; i<=n; ++i){
        fscanf(f, "%d", &v[i]);
        if(v[i]<0) ++nr0;
        if(v[i]>minn){
            minn=v[i];
            l1m=i; l2m=i;
        }
    }
    if(nr0==n){
        fprintf(g, "%d %d %d", minn, l1m, l2m);
        return 0;
    }
    for(int i=1; i<=n; ++i){
        s+=v[i];
        if(s<0){
            s-=v[i]; --l2;
            l1=i+1; l2=i;
            s=0;
        }
        else{
            s+=nr;
            ++l2;
        }
        if(s>smax){
            smax=s;
            l1m=l1;
            l2m=l2;
        }
    }
    fprintf(g, "%d %d %d", smax, l1m, l2m);
return 0;
}