Cod sursa(job #2831921)

Utilizator db_123Balaban David db_123 Data 12 ianuarie 2022 14:17:51
Problema Subsecventa de suma maxima Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <vector>

using namespace std;

ifstream cin("ssm.in");
ofstream cout("ssm.out");

class Info{
public:
    int sum;
    int left;
};

int n;
vector<int> v;
vector<Info> dp;

void read(){
    cin>>n;
    v.resize(n+1);
    dp.resize(n+1);
    for(int i=1;i<=n;i++){
        cin>>v[i];
    }
}

void solve(){
    dp[1].sum=v[1];
    dp[1].left=1;

    int sumMax=0,pozMax=0;
    for(int i=2;i<=n;i++){
        dp[i].sum=v[i];
        dp[i].left=i;
        if(dp[i].sum<dp[i-1].sum+v[i]){
            dp[i].sum=dp[i-1].sum+v[i];
            dp[i].left=dp[i-1].left;
        }
        (sumMax<dp[i].sum)?sumMax=dp[i].sum,pozMax=i:NULL;
    }
    cout<<sumMax<<" "<<dp[pozMax].left<<" "<<pozMax;
}

int main() {

    read();
    solve();
    return 0;
}