Cod sursa(job #2776982)

Utilizator Florian11232Florian Susai Florian11232 Data 21 septembrie 2021 19:00:25
Problema Subsecventa de suma maxima Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 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];
    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)
        {
            pos_start=i;
            break;
        }
    }
    
    out << maxim <<" "<<pos_start <<" " << pos_fin << '\n';

    return 0;
}