Cod sursa(job #1929472)

Utilizator DanyBvGeorge-Daniel Gagiu DanyBv Data 17 martie 2017 18:11:20
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <cstdio>

#define NMAX 6000001

using namespace std;

int s[NMAX], n, sum, maxsum, maxstart, maxend;

void read()
{
    freopen("ssm.in", "r", stdin);
    scanf("%d", &n);
    for(int i = 0; i < n; i++)
        scanf("%d", &s[i]);
}

void solve()
{
    maxsum = sum = s[0];
    maxstart = maxend = 0;
    int tstart = 0, tend = 0;
    for(int i = 1; i < n; i++)
    {
        if(sum + s[i] < 0)
        {
            sum = 0;
            tstart = tend = i + 1;
        }
        else
        {
            sum += s[i];
            tend = i;
        }
        if(sum > maxsum)
        {
            maxsum = sum;
            maxstart = tstart;
            maxend = tend;
        }
    }
}

void print()
{
    freopen("ssm.out", "w", stdout);
    printf("%d %d %d\n", maxsum, maxstart + 1, maxend + 1);
}

int main()
{
    read();
    solve();
    print();
    return 0;
}