Cod sursa(job #2559049)

Utilizator xCata02Catalin Brita xCata02 Data 26 februarie 2020 22:36:20
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
using namespace std;

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

#define cin fin
#define cout fout

#define Nmax (int)(6*1e6)+10

int dp[Nmax];
int n;

int main()
{
    cin >> n;
    for(int i=1; i<=n; i++){
        int x;
        cin >> x;
        dp[i] = dp[i-1] + x;
    }

    int Min = 0, poz;

    int solutia = -INT_MAX, inceput = 0, sfarsit = 0;

    for(int i=1; i <= n; i++) {
        if(solutia < dp[i] - Min)
        {
            solutia = dp[i] - Min;

            inceput = poz;
            sfarsit = i;
        }

        if(dp[i] < Min)
        {
            Min = dp[i];
            poz = i + 1;
        }
    }

    cout << solutia << " " << inceput << " " << sfarsit;
}