Cod sursa(job #2240225)

Utilizator YetoAdrian Tonica Yeto Data 12 septembrie 2018 19:34:47
Problema Subsecventa de suma maxima Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <limits.h>
using namespace std;
int best[6000001], sum[6000001];
int n, i, x, minim, bestsum, c, d, maxlen=INT_MAX;

int main () {
    ifstream fin ("ssm.in");
    ofstream fout ("ssm.out");
    fin>>n;
    sum[0]=0;
    for (i=1;i<=n;i++) {
        fin>>x;
        sum[i]=x+sum[i-1];
    }
    minim=sum[0];
    bestsum=INT_MIN;
    for (i=1;i<=n;i++) {
        best[i]=sum[i]-minim;
        if (minim>=sum[i]) {
            minim=sum[i];
            c=i;
        }
        if (bestsum<best[i]) {
            bestsum=best[i];
            d=i;
        } else if (best[i]==bestsum)
            if (i-c<maxlen) {
                d=i;
            }
    }

    fout<<bestsum<<" "<<c+1<<" "<<d;
    return 0;
}