Cod sursa(job #2890687)

Utilizator mirunavramMiruna Avram mirunavram Data 16 aprilie 2022 12:17:15
Problema Subsecventa de suma maxima Scor 80
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include<bits/stdc++.h>

using namespace std;

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


int 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

    **/
    int indexFinal = n,indexInitial = 1;
    sp = 0;
    //mp[0] = 0;
    mp = 0;

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

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