Cod sursa(job #984838)

Utilizator gbi250Gabriela Moldovan gbi250 Data 15 august 2013 16:29:22
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <cstdio>
#include <iostream>
#include <climits>
using namespace std;

int n, i, in, sf, start, sum_temp, Smax, MAX, v[6000002];
bool sw;

int main()
{
    freopen("ssm.in", "r", stdin);
    freopen("ssm.out", "w", stdout);
    MAX=INT_MIN;
    scanf("%d", &n);
    for(i=1;i<=n;i++)
    {
        scanf("%d", &v[i]);
        if(v[i]>0)
            sw=1;
            if(v[i]>MAX)
                MAX=v[i], in=sf=i;
    }
    if(!sw)
    {
        for(i=1;i<=n;i++)
            if(v[i]>MAX)
                MAX=v[i], in=sf=i;
    }
    if(sw)
    {
        for(i=1;i<=n;i++)
        {
            sum_temp+=v[i];
            if(sum_temp>=Smax)
            {
                Smax=sum_temp;
                in=start;
                sf=i;
            }
            else if(sum_temp<0)
            {
                start=i+1;
                sum_temp=0;
            }
        }
        printf("%d %d %d\n", Smax, in, sf);
    }
    else printf("%d %d %d\n", MAX, in, sf);
    return 0;
}