Cod sursa(job #1810486)
Utilizator | Data | 20 noiembrie 2016 04:46:50 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.54 kb |
#include <cstdio>
using namespace std;
int main()
{
FILE *f=fopen("ssm.in","r");
int n,x,sc,i,li=1,smax,limax=1,lfmax=1;
fscanf(f,"%d%d",&n,&x);
sc=smax=x;
for(i=2;i<=n;i++)
{
fscanf(f,"%d",&x);
if(sc<0){sc=x;li=i;}
else if(sc+x>=0) sc+=x;
else {sc=x;li=i;}
if(sc>smax){smax=sc;limax=li;lfmax=i;}
else if(sc==smax && i-li<lfmax-limax){limax=li;lfmax=i;}
}
fclose(f);f=fopen("ssm.out","w");
fprintf(f,"%d %d %d",smax,limax,lfmax);
return 0;
}