Cod sursa(job #2784556)

Utilizator lolismekAlex Jerpelea lolismek Data 16 octombrie 2021 18:48:50
Problema Subsecventa de suma maxima Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int N = 6000002;
const int INFINIT = 10e9;
int v[N], sum[N], best[N];

int main()
{
    int n, minim, sum_max, i, st, dr, poz_min;
    fin >> n;
    for(i = 1; i <= n; i++)
        fin >> v[i];

    for(i = 1; i <= n; i++)
        sum[i] = sum[i - 1] + v[i];

    minim = sum[0];
    poz_min = 0;
    sum_max = -INFINIT;
    for(i = 1; i <= N; i++){
        best[i] = sum[i] - minim;
        if(minim > sum[i]){
           minim = sum[i];
           poz_min = i;
        }
        if(best[i] > sum_max){
            sum_max = best[i];
            st = poz_min + 1;
            dr = i;
        }
    }
    fout << sum_max << " " << st << " " << dr;
    return 0;
}