Cod sursa(job #670677)

Utilizator ariel_roAriel Chelsau ariel_ro Data 29 ianuarie 2012 19:26:49
Problema Subsecventa de suma maxima Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <stdio.h>
#include <limits.h>

# define NMAX 6000005

using namespace std;
int N, a[NMAX], sums[NMAX];

void read()
{
    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);

    scanf("%d", &N);
    int s = 0;
    for (int i = 0; i < N; i++)
    {
        scanf("%d", &a[i]);
        s += a[i];
        sums[i] = s;
    }
}

void solve()
{
    int minS = INT_MAX, maxS = INT_MIN, minPoz = -1, maxPoz = -1;
    for (int i = 0; i < N; i++)
    {
        if (minS > sums[i])
        {
            minS = sums[i];
            minPoz = (i + 2);
        }

        if (maxS < sums[i])
        {
            maxS = sums[i];
            maxPoz = (i + 1);
        }
    }

    printf("%d %d %d", maxS - minS, minPoz, maxPoz);
}

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