Cod sursa(job #2776985)

Utilizator Florian11232Florian Susai Florian11232 Data 21 septembrie 2021 19:07:06
Problema Subsecventa de suma maxima Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <cmath>
#include <fstream>
using namespace std;

#define dim 6000001

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

int v[dim], bst[dim];

int main()
{
    int n, i,pos_start,pos_fin,s=0;
    
    in >> n;
    for(i = 1; i <= n; i++) {
        in >> v[i];
    }
    
    bst[1] = v[1];
    int maxim = bst[1];
    pos_start = 1;
    pos_fin = 1;
    for(i = 2; i <= n; i++) {
        bst[i] = max(v[i], v[i] + bst[i-1]);
        if (bst[i] > maxim) {
            maxim = bst[i];
            pos_fin = i;
        }
    }
    for(i = pos_fin; i>=1; i--)
    {
        s += v[i];
        if(s == maxim && v[i-1]!=0)
        {
            pos_start = i;
            break;
        }
    }
    
    out << maxim <<" "<<pos_start <<" " << pos_fin << '\n';

    return 0;
}