Cod sursa(job #2171625)

Utilizator zanugMatyas Gergely zanug Data 15 martie 2018 12:57:18
Problema Subsecventa de suma maxima Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 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 = 0; i < n; ++i)
    {
        fin >> x[i];
    }

    s[0] = x[0];

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

    int mini = s[0];
    int maxi = INT_MIN;
    int first = 0;
    int last = 1;

    for(int i = 1; i < n; ++i)
    {
        if(s[i] - mini > maxi)
        {
            maxi = s[i] - mini;
            last = i;
        }

        if(s[i] < mini)
        {
            mini = s[i];
            first = i;
        }
    }

    fout << maxi << " " << first + 2 << " " << last + 1;

    return 0;
}