Cod sursa(job #2278505)

Utilizator TooHappyMarchitan Teodor TooHappy Data 8 noiembrie 2018 09:32:54
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>
 
using namespace std;
 
ifstream in("ssm.in");
ofstream out("ssm.out");

int main() {
    ios::sync_with_stdio(false); in.tie(0); out.tie(0);

    int n; in >> n;

    vector< int > v(n + 1, 0);
    for(int i = 1; i <= n; ++i) {
        in >> v[i];
    }

    vector< int > dp(n + 1, 0);
    dp[1] = v[1];

    int bestSum = v[1], bestI = 1, bestJ = 1;
    int currI = 1, currJ = 1;

    for(int i = 2; i <= n; ++i) {
        if(dp[i - 1] + v[i] > v[i]) {
            dp[i] = dp[i - 1] + v[i];
            ++currJ;
        } else {
            dp[i] = v[i];
            currI = i;
            currJ = i;
        }

        if(dp[i] > bestSum) {
            bestSum = dp[i];
            bestI = currI;
            bestJ = currJ;
        }
    }

    out << bestSum << " " << bestI << " " << bestJ << "\n";

    in.close(); out.close();
 
    return 0;
}