Cod sursa(job #3204777)

Utilizator not_anduAndu Scheusan not_andu Data 17 februarie 2024 13:52:15
Problema Subsecventa de suma maxima Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;

#define INFILE "ssm.in"
#define OUTFILE "ssm.out"

typedef long long ll;

void solve(){

    int n; cin >> n;
    vector<int> v(n + 1);
    vector<int> dp(n + 1, 0);

    for(int i = 1; i <= n; ++i) cin >> v[i];

    int ind1 = 1, ind2 = 1, ansI = 1, ansJ = 1,ans = v[1];
    dp[1] = v[1];
    for(int i = 2; i <= n; ++i){
        if(dp[i - 1] + v[i] > v[i]){
            dp[i] = dp[i - 1] + v[i];
            ind2 = i;
        }
        else {
            dp[i] = v[i];
            ind1 = i;
        }
        if(dp[i] > ans){
            ans = dp[i];
            ansI = ind1, ansJ = ind2;
        }
    }

    cout << ans << " " << ansI << " " << ansJ << '\n';

}

int main(){
    ios_base::sync_with_stdio(false);
    freopen(INFILE, "r", stdin);
    freopen(OUTFILE, "w", stdout);
    cin.tie(0), cout.tie(0);
    solve();
    return 0;
}