Cod sursa(job #2890892)

Utilizator mirunavramMiruna Avram mirunavram Data 16 aprilie 2022 22:49:05
Problema Subsecventa de suma maxima Scor 85
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include<bits/stdc++.h>

using namespace std;

int n;
long long sol = LONG_MIN;
//v[6000005],sp[6000005],mp[6000005];


long long mp,sp;
int main() {
    ifstream fin("ssm.in");
    ofstream fout("ssm.out");


    /**Citirea datelor**/

    fin >> n;

    /**

    Calculam sumele partiale

    sp[0] = 0
    sp[i] = v[i] + sp[i-1]

    mp[i] = min(sp[0],sp[1],sp[2],...,sp[i])

    mp[i] = min(mp[i-1],sp[i])
    mp[0] = 0

    **/
    long long indexFinal,indexInitial,finLeft;
    sp = 0;
    //mp[0] = 0;
    mp = 0;

    for (long long i = 1; i <= n; i++) {
        long long x;
        fin >> x; //citim elementul curent
        sp += x;
        long long val = sp - mp;
        if(sp < mp )
            indexInitial = i+1;
        if(val > sol)
        {
            indexFinal = i;
            finLeft = indexInitial;
        }
        sol = max(sol, val);
        mp = min(mp, sp);
    }

    fout << sol << " "<<indexInitial<<" "<<indexFinal;
}