Cod sursa(job #1820289)

Utilizator racheriunicolaechowchow racheriunicolae Data 1 decembrie 2016 15:40:18
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <cstdio>
#include <algorithm>
#define lmax 6000005
int n,i,vmax,poz,val,ok,pinceput;
int ssm[lmax],v[lmax];
using namespace std;

int main()
{
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    scanf("%d",&n);

    ssm[0]=ssm[1]=0;
    scanf("%d",&v[1]);
    ssm[1]=v[1];
    vmax=v[1];
    poz=1;
    for(i=2;i<=n;i++)
    {
        scanf("%d",&v[i]);
        ssm[i]=max(v[i],ssm[i-1]+v[i]);
        if(ssm[i]>vmax)vmax=ssm[i],poz=i;
        //printf("%d ",ssm[i]);
    }
    v[0]=0;
    for(i=1;i<=poz;i++)
        v[i]+=v[i-1];
    val=v[poz];
    ok=0;
    for(i=1;i<=poz and ok==0;i++)
    {
        if(val-v[i-1]==vmax)ok++,pinceput=i;
    }
    printf("%d %d %d\n",vmax,pinceput,poz);
    return 0;
}