Cod sursa(job #311311)
Utilizator | Rusu Radu rusu_radu | Data | 3 mai 2009 11:32:05 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 70 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.58 kb |
#include <stdio.h>
long int n, a, i, st, dr, S, Smax, drmax, stmax;
FILE *fin=fopen("ssm.in", "r");
FILE *fout=fopen("ssm.out", "w");
int main()
{
fscanf (fin, "%ld\n", &n);
st=1;
for (i=1; i<=n; i++)
{
fscanf (fin, "%ld ", &a);
if (a>=0)
{
S+=a;
dr=i;
}
else
{
if (S>Smax)
{
Smax=S;
drmax=dr;
stmax=st;
}
if (S+a>0)
{S+=a;dr=i;}
else
{
S=0;
st=i+1;
}
}
}
fprintf(fout, "%ld %ld %ld\n", Smax, stmax,drmax);
fclose (fout);
return 0;
}