Cod sursa(job #849600)
Utilizator | Data | 7 ianuarie 2013 12:49:50 | |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 95 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.49 kb |
#include <cstdio>
#include <iostream>
FILE *fin=fopen("ssm.in", "r"), *fout=fopen("ssm.out", "w");
long n, i, in, sf, start, Scurenta, Smax;
int v[6000000];
using namespace std;
int main()
{
fscanf(fin, "%ld", &n);
for(i=0;i<=n;i++)
fscanf(fin, "%d", &v[i]);
for(i=0;i<=n-1;i++)
{
Scurenta+=v[i];
if(Scurenta>Smax)
{
Smax=Scurenta;
in=start;
sf=i;
}
else if(Scurenta<0)
{
start=i+1;
Scurenta=0;
}
}
fprintf(fout, "%d %d %d", Smax, in+1, sf+1);
return 0;
}