Cod sursa(job #2506353)

Utilizator lucamLuca Mazilescu lucam Data 7 decembrie 2019 21:05:28
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
//#include <cstdio>
#include <fstream>

const int NMAX = 6e6;
int ind[NMAX], s[NMAX];

int main(void)
{
    //freopen("ssm.in", "r", stdin);
    //freopen("ssm.out", "w", stdout);
    int n, begpos, x, endpos, smax;
    //scanf("%d %d", &n, &x);
    std::ifstream fin("ssm.in");
    std::ofstream fout("ssm.out");
    fin >> n >> x;
    s[0] = smax = x, ind[0] = 1;
    for (int i = 1; i < n; ++i) {
        fin >> x;
        if (s[i - 1] < 0)
            s[i] = x, ind[i - 1] = i;
        else
            s[i] = x + s[i - 1], ind[i - 1] = ind[i - 2];
        if (s[i] > smax)
            smax = s[i], begpos = i, endpos = ind[i - 1];
    }
    fout << smax << ' ' << endpos + 1 << ' ' << begpos + 1 << std::endl; 
    //printf("%d %d %d\n", smax, endpos + 1, begpos + 1);
    //fclose(stdin);
    //fclose(stdout);
    return 0;
}