Cod sursa(job #1573131)

Utilizator MAlexandruMatei Alexandru MAlexandru Data 19 ianuarie 2016 13:44:28
Problema Subsecventa de suma maxima Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <stdio.h>

using namespace std;
FILE*fin=fopen("ssm.in","r");
FILE*fout=fopen("ssm.out","w");

    int stt,enn,sm,i,st,en,s,n,a[6000001],mi=-1000,poz;
int main()
{
    fscanf(fin,"%d",&n);
    for (i=1;i<=n;i++)fscanf(fin,"%d",&a[i]);
    for (i=1;i<=n;i++)
    {
    s+=a[i];
    if (a[i]>mi && a[i]<0){mi=a[i];poz=i;}
    if (s<0){s=0;st=i+1;en=i+1;}
    else {en++;if (s>sm){sm=s;stt=st;enn=en-1;}
    else if (s==sm && (enn-stt)>(en-st)){sm=s;stt=st;enn=en-1;}}
    }
    if (s>0)fprintf(fout,"%d %d %d", sm , stt , enn);
    else fprintf(fout,"%d %d %d", mi , poz , poz);
    fclose(fin);
    fclose(fout);
    return 0;
}