Cod sursa(job #2378376)

Utilizator mihaimusat.1998Musat Mihai-Robert mihaimusat.1998 Data 12 martie 2019 09:28:32
Problema Subsecventa de suma maxima Scor 75
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>

using namespace std;

int main()
{
    ifstream fin("ssm.in");
    ofstream fout("ssm.out");

    int n;
    vector<int> v;

    fin>>n;
    for(int i = 0; i<n; i++) {
        int x;
        fin>>x;
        v.push_back(x);
    }

    vector<int> dp(n);
    vector<int> start(n);

    dp[0]=v[0];
    start[0]=0;

    for(int i=1; i<n; i++) {
        if(dp[i-1]>=0) {
            dp[i] = dp[i-1]+v[i];
            start[i]=start[i-1];
        }
        else {
            dp[i]=v[i];
            start[i]=i;
        }
    }
    int sol = dp[0];
    int pos = 0;
    for(int i = 1; i<n; i++) {
        if(dp[i]>sol) {
            sol = dp[i];
            pos = i;
        }
    }
    fout<<sol<<" "<<start[pos]+1<<" "<<pos+1<<endl;

    return 0;
}