Cod sursa(job #1413785)

Utilizator gabimoiseMoise Gabriel gabimoise Data 2 aprilie 2015 08:44:40
Problema Subsecventa de suma maxima Scor 35
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <cstdio>
#define N 6000005

using namespace std;

long a[N],poz[N],minj[N],n,s,poz1,poz2,poz1c,maxim,i,j,sum;

int main()
{
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    scanf("%ld",&n);
    scanf("%ld",&a[1]);
    minj[1]=a[1]; s=a[1]; poz[1]=1;
    for (i=2;i<=n;i++)
    {
        scanf("%ld",&a[i]);
        minj[i]=minj[i-1]; poz[i]=poz[i-1];
        s=s+a[i];
        if (s<minj[i]) {minj[i]=s; poz[i]=i;}
    }
    s=0; maxim=0; poz1=0; poz2=0;
    for (i=1;i<=n;i++)
    {
        s=s+a[i]; poz1c=1; sum=s;
        for (j=1;j<i;j++) {if (s-minj[j]>sum) {sum=s-minj[j]; poz1c=poz[i]+1;}}
        if (sum>maxim) {maxim=sum; poz1=poz1c; poz2=i;}
    }
    printf("%ld %ld %ld",maxim,poz1,poz2);
    return 0;
}