Cod sursa(job #1916973)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 9 martie 2017 10:49:11
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <bits/stdc++.h>

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

const int NMax = 6000003;
const int INF = 2000000003;

int n,mx,ans1,ans2,ans3,L,x;
int dp[NMax];

int main()
{
    f >> n;
    dp[0] = -INF;
    mx = -INF;
    L = 1;
    for(int i = 1; i <= n; ++i){
        f >> x;
        if(dp[i - 1] + x >= x){
            dp[i] = dp[i - 1] + x;
            if(dp[i] > mx){
                ans1 = dp[i];
                ans2 = L;
                ans3 = i;
                mx = dp[i];
            }
        }else{
            dp[i] = x;
            L = i;
            if(dp[i] > mx){
                ans1 = dp[i];
                ans2 = L;
                ans3 = i;
                mx = dp[i];
            }
        }
    }
    g << ans1 << ' ' << ans2 << ' ' << ans3 << '\n';
    return 0;
}