Cod sursa(job #1916940)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 9 martie 2017 10:43:05
Problema Subsecventa de suma maxima Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 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;
int a[NMax],dp[NMax],L[NMax],R[NMax];

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