Cod sursa(job #995871)

Utilizator andreiblaj17Andrei Blaj andreiblaj17 Data 10 septembrie 2013 13:36:26
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <iostream>
#include <fstream>
#define nmax 6000001

using namespace std;

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

    int n,i,v[nmax],dp[nmax],pozi,maxim;

int main(){

    in >> n;
    for (i=1; i<=n; i++)
        in >> v[i];

    dp[n]=v[n];

    for (i=n-1; i>=1; i--){
        dp[i]=max(dp[i+1]+v[i], v[i]);
        if (dp[i]>=maxim) pozi=i, maxim=dp[i];
    }

    i=pozi;

    while (maxim>0)
        maxim-=v[i], i++;

    out << dp[pozi] << " " << pozi << " " << i-1;

    return 0;
}