Cod sursa(job #678200)

Utilizator dean_dumitruDean Dumitru dean_dumitru Data 11 februarie 2012 10:40:29
Problema Subsecventa de suma maxima Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 1.25 kb
#include <iostream>
#include <cstdio>


using namespace std;

int k, a[100], sum[100], best[100];
int bestsum = -int(2e9), minn;
int ii, is, iii;

//int sum_max_sec()
//{
   /* sum[0] = 0;
    for(int i = 1; i <= k; i++)
        sum[i] = a[i] + sum[i-1];
    minn = sum[0];
    for(int i = 1; i <= k; i++)
    {
        best[i] = sum[i] - minn;
        if(minn > sum[i])
        {
            minn = sum[i];
            ii = i+1;
        }
        if(bestsum < best[i])
        {
            bestsum = best[i];
            is = i;
            iii = ii;
        }
    }
    return bestsum;
}*/

int main()
{
    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);
    scanf("%d", &k);
    for(int i = 1; i <= k; i++)
        scanf("%d", &a[i]);
    sum[0] = 0;
    for(int i = 1; i <= k; i++)
        sum[i] = a[i] + sum[i-1];
    minn = sum[0];
    for(int i = 1; i <= k; i++)
    {
        best[i] = sum[i] - minn;
        if(minn > sum[i])
        {
            minn = sum[i];
            ii = i+1;
        }
        if(bestsum < best[i])
        {
            bestsum = best[i];
            is = i;
            iii = ii;
        }
    }
    printf("%d %d %d", bestsum, iii, is);
    return 0;
}