Cod sursa(job #2725003)

Utilizator mariusn01Marius Nicoli mariusn01 Data 18 martie 2021 11:44:58
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
using namespace std;
int v[6000001], s[6000001];
/// s[i] = suma maxima a unei secvente care se incheie pe pozitia i
/// o formez fie luand singur elementul de pe pozitia i
/// fie alipindu-l la suma maxima care se termina pe pozitia anterioara
int n, i, p, maxim, pMaxim, uMaxim;
int main () {
    ifstream fin ("ssm.in");
    ofstream fout("ssm.out");
    fin>>n;
    maxim = (1<<31) + 1;
    for (i=1;i<=n;i++) {
        fin>>v[i];
        if (v[i] + s[i-1] >= v[i])
            s[i] = v[i]+s[i-1];
        else {
            s[i] = v[i];
            p = i;
        }
        if (s[i] > maxim) {
            maxim = s[i];
            pMaxim = p;
            uMaxim = i;
        }
    }
    fout<<maxim<<" "<<pMaxim<<" "<<uMaxim;
    return 0;
}