Cod sursa(job #2409774)

Utilizator armandpredaPreda Armand armandpreda Data 19 aprilie 2019 13:18:05
Problema Subsecventa de suma maxima Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <cstdio>
#define LIM 6000000

using namespace std;

int v[LIM+10];
int main()
{
    freopen("ssm.in","r",stdin);
    freopen("ssm.out","w",stdout);
    int n,s=0,st=1,dr=1,smax,stmax=1,drmax=1;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
        scanf("%d",v+i);
    s=smax=v[1];
    for(register i=2;i<=n;++i)
        if(s+v[i]>=v[i])
        {
            s=s+v[i];
            dr=i;
            if(s>smax)
            {
                smax=s;
                stmax=st;
                drmax=dr;
            }
        }
        else
        {
            st=dr=i;
            s=v[i];
            if(s>smax)
            {
                smax=s;
                stmax=st;
                drmax=dr;
            }
        }
    printf("%d %d %d",smax,stmax,drmax);
    return 0;
}