Cod sursa(job #1243273)

Utilizator alexalghisiAlghisi Alessandro Paolo alexalghisi Data 15 octombrie 2014 18:59:50
Problema Subsecventa de suma maxima Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
/*
    ssm - O(n)
    ssm = sp[i] - min(sp[j]) , j < i
*/

#include <iostream>
#include <fstream>


#define DN 6000005
using namespace std;

ifstream f("ssm.in");
ofstream g("ssm.out");

int v[DN],ii,jj,n;
int sp[DN],minim=0,rez;

void solve(){

    f>>n;
    ii = 1; /// The whole vector case
    rez = -(1<<30);
    for(int i=1;i<=n;++i){

        f>>v[i];
        sp[i] = sp[i-1] + v[i]; /// Construit sp

        if(sp[i] - minim > rez){
            rez = sp[i] - minim; /// Gasim maxi ssm
            jj = i;
        }
        if( minim > sp[i]){
            ii = i + 1;
            minim = sp[i];
        }
    }
    g<<rez<<" "<<ii<<" "<<jj;
}


int main()
{
    solve();
    return 0;
}