Cod sursa(job #2725010)

Utilizator mariusn01Marius Nicoli mariusn01 Data 18 martie 2021 11:46:57
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
using namespace std;
int v, s;
/// 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;
        if (v + s >= v)
            s = v+s;
        else {
            s = v;
            p = i;
        }
        if (s > maxim) {
            maxim = s;
            pMaxim = p;
            uMaxim = i;
        }
    }
    fout<<maxim<<" "<<pMaxim<<" "<<uMaxim;
    return 0;
}