Cod sursa(job #678206)

Utilizator gallexdAlex Gabor gallexd Data 11 februarie 2012 10:47:28
Problema Subsecventa de suma maxima Scor 75
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <cstdio>
#define INF 0x3f3f3f3f

int N,term[7000000],sume[7000000],bsum[7000000],minim,sumM=-INF,iminim,isumM;

void citire () {
    scanf("%d",&N);
    for (int i=1; i<=N; ++i)
        scanf ("%d",&term[i]);
}

void suma () {
    minim=sume[0]=0;
    for (int i=1; i<N; ++i) sume[i] = term[i] + sume[i-1];

    for (int i=1; i<N; ++i) {
        bsum[i] = sume[i] - minim;
        if (minim > sume[i]) minim = sume[i];
        if (sumM < bsum[i]){
            sumM = bsum[i];
            isumM = i;
        }
    }

    minim=0;
    for (int i=1; i<isumM; ++i)
        if (minim > sume[i]) {
            minim = sume[i];
            iminim = i+1;
        }
}

int main () {

    freopen ("ssm.in","rt",stdin);
    freopen ("ssm.out","wt",stdout);

    citire();
    suma();
    printf("%d %d %d", sumM, iminim, isumM);
    return 0;
}