Cod sursa(job #2028910)

Utilizator vladcoroian2001Vlad Coroian vladcoroian2001 Data 28 septembrie 2017 20:24:52
Problema Subsecventa de suma maxima Scor 85
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <stdio.h>

using namespace std;
FILE *fi=fopen("ssm.in","r");
FILE *fo=fopen("ssm.out","w");
int n,i,X[6000001],BEST[6000001],START[6000001],rez,first,last;

int main()
{
    fscanf(fi,"%d",&n);
    for(i=1;i<=n;i++)
        fscanf(fi,"%d",&X[i]);
    BEST[1]=X[1];
    START[1]=1;

    for(i=2;i<=n;i++)
        if(BEST[i-1]+X[i]>=X[i])
        {
            BEST[i]=BEST[i-1]+X[i];
            START[i]=START[i-1];
        }
        else
        {
            BEST[i]=X[i];
            START[i]=i;
        }
    rez=BEST[1];
    first=1;
    last=1;
    for(i=1;i<=n;i++)
        if(rez<BEST[i])
        {
            rez=BEST[i];
            first=START[i];
            last=i;
        }
    fprintf(fo,"%d %d %d",rez,first,last);
    fclose(fi);
    fclose(fo);
    return 0;
}