Cod sursa(job #2029919)

Utilizator marvelousMarvelous marvelous Data 30 septembrie 2017 17:26:13
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
///ssm folosind dinamica
///pt. fiecare el. i: pot sa incep subsecventa de pe el. i sau pot sa o continui cu el. i
#include <bits/stdc++.h>

using namespace std;

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

int n, x, L, R, l, r, d[6000005], bestans;

int main()
{
    F >> n;
    bestans=-1<<30;
    for(int i = 1; i <= n; ++ i)
    {
        F >> x; d[i]=max(d[i-1]+x, x);
        if(d[i-1]+x<x) /// sau d[i-1]<x-x <=> d[i-1]<0
            d[i]=x, l=i;
        else d[i]=d[i-1]+x;
        if(d[i]>bestans) bestans=d[i], L=l, R=i;
    }
    if(L > R) L = R;
    G << bestans << " " << L << " " << R;
    return 0;
}