Cod sursa(job #2278496)

Utilizator TooHappyMarchitan Teodor TooHappy Data 8 noiembrie 2018 09:13:42
Problema Subsecventa de suma maxima Scor 40
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 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< pair< int, int > > minSums(n + 1);
    minSums[0] = {INT_MAX, -1};

    for(int i = 1; i <= n; ++i) {
        v[i] += v[i - 1];
        minSums[i] = min(minSums[i - 1], {v[i], i});
    }

    int bestSum = v[1], bestI = 1, bestJ = 1;
    for(int j = 1; j <= n; ++j) {
        if(v[j] - minSums[j - 1].first > bestSum) {
            bestSum = v[j] - minSums[j - 1].first;
            bestI = minSums[j - 1].second;
            bestJ = j;
        }
    }

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

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