Cod sursa(job #1899661)

Utilizator shantih1Alex S Hill shantih1 Data 2 martie 2017 21:09:10
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>

using namespace std;

int n, bestsum, dr, j, st;
int v[6000001], i, best[6000001];

int main () {
    
    ifstream fin("ssm.in");
    ofstream fout("ssm.out");
    
    fin >> n;
    for (i = 1; i <= n; i++)    fin >> v[i];
    
    bestsum = v[1];
    dr = 1;
    for (i = 1; i <= n; i++)
    {
        best[i] = v[i];
        if (best[i] < best[i-1] + v[i])
            best[i] = best[i-1] + v[i];
        
        if (best[i] > bestsum)
        {
            bestsum = best[i];
            dr = i;
        }
    }
    
    i = dr;
    n = bestsum;
    while (i >= 1 && n != 0)
    {
        n -= v[i];
        i--;
    }
    if (bestsum == 0)    i--;
    st = i+1;
    j = st-1;
    if (v[st-1] == 0)
        while (v[j]==0 && j >= 1)   {   st--;   j--;   }
        
    fout << bestsum << " " << st << " " << dr << "\n";
}