Cod sursa(job #812213)
Utilizator | Vlad Dimulescu vladvaldez | Data | 13 noiembrie 2012 17:26:37 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.51 kb |
#include <stdio.h>
#include <stdlib.h>
using namespace std;
FILE *f=fopen("ssm.in","r");
FILE *g=fopen("ssm.out","w");
int s[6000300],best[6000300],max,o,p,n,i,min,x;
int main()
{
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
{fscanf(f,"%d",&x);
s[i]=s[i-1]+x;
}
min=9999999;
max=-99999999;
for (i=1;i<=n;i++)
{
best[i]=s[i]-min;
if (min>s[i]){min=s[i];p=i+1;}
if (max<best[i]) {max=best[i];o=i;if (min==s[i])p=i;}
}
if (p>o)p=o;
fprintf(g,"%d %d %d",max,p,o);
fclose(g);
return 0;
}