Cod sursa(job #991936)

Utilizator yololy97Olaru Bogdan-Ioan yololy97 Data 31 august 2013 20:44:31
Problema Subsecventa de suma maxima Scor 55
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<cstdio>
#include <algorithm>

using namespace std;
int v[600001], n, dp[600001],parent[600001];
void citire(){
    freopen("ssm.in", "r", stdin);
    scanf("%d ",&n);
    for(int i = 1; i <= n; ++i)
        scanf("%d ",&v[i]);
}
void solve(){
    //cu ce incepem?:))
    // pai dp[0] = 0, dar asta e deja, deci facem direct dp[i]
    // calculezi dp[i]
    int rez = 0, poz = 0, x = 0;
    for (int i = 1; i <= n; ++i) {
        if(dp[i - 1] + v[i] < v[i])
            dp[i] = v[i];
        else dp[i] = dp[i - 1] + v[i],
             parent[i] = i - 1;
        if(rez < dp[i])
            rez = dp[i],
            poz = i;
    }
    printf ("%d ", rez);
    x = poz;
    while(parent[x])
        x = parent[x];
    printf("%d %d\n", x, poz);
}
int main(){
    freopen("ssm.out", "w", stdout);
    citire();
    solve();
}