Cod sursa(job #2171721)

Utilizator zanugMatyas Gergely zanug Data 15 martie 2018 13:18:50
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <fstream>
#include <cmath>
#include <climits>

#define ll long long

using namespace std;

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

const int NLIM = 6e6+10;

int n, x[NLIM];
int s[NLIM];

int main()
{
    ios::sync_with_stdio(false);

    fin >> n;
    for(int i = 1; i <= n; ++i)
    {
        fin >> x[i];
    }

    s[1] = x[1];

    for(int i = 2; i <= n; ++i)
    {
        s[i] = s[i-1] + x[i];
    }

    int miniidx = 1;
    int mini = s[1];
    int maxi = s[1];
    int first = 1;
    int last = 1;

    for(int i = 2; i <= n; ++i)
    {
        if(s[i] < mini)
        {
            mini = s[i];
            miniidx = i+1;
        }

        if(s[i] - mini > maxi)
        {
            maxi = s[i] - mini;
            last = i;
            first = miniidx;
        }
    }

    fout << maxi << " " << first << " " << last;

    return 0;
}