Cod sursa(job #1820284)

Utilizator racheriunicolaechowchow racheriunicolae Data 1 decembrie 2016 15:25:40
Problema Subsecventa de suma maxima Scor 95
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
#include <algorithm>
#define lmax 6000005
int n,i,x,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;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&x);
        v[i]=x;
        ssm[i]=max(x,ssm[i-1]+x);
        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;
}