Cod sursa(job #2589978)

Utilizator r00t_Roman Remus r00t_ Data 27 martie 2020 12:00:30
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <iostream>
#include <algorithm>

using namespace std;

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

int sum[6000010];
//int minsum[6000010];
//int best[6000010];
//int lft[6000010];

int main()
{
    int n;
    cin >> n;
    for (int i = 1; i <= n; i++)
    {
        int x;
        cin >> x;
        sum[i] = x + sum[i - 1];
        
    }
    int minsum = sum[0];
    
    int leftSol=0, right=0, left = 0;
    int bestSol = -(1<<30);
    for (int i = 1; i <= n; i++)
    {
        if (sum[i] < minsum)
        {
            left = i;
            minsum = min(minsum, sum[i]);
        }
        int best = sum[i] - minsum;
        if (best > bestSol)
        {
            leftSol = left;
            right = i;
            bestSol = max(bestSol, best);
        }
    }


    cout << bestSol << ' ' << leftSol+1 << ' ' << right;




    return 0;
}