Cod sursa(job #269536)
Utilizator | dinu dan dinud | Data | 2 martie 2009 23:28:23 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.87 kb |
#include<stdio.h>
#define DIM 6000002
int n,v[DIM],s[DIM],i,pi,pf,max,pmax;
int main() {
FILE *f = fopen("ssm.in","r");
FILE *g = fopen("ssm.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
s[1]=v[1];
pi=1;
pf=1;
max=s[1];
pmax=1;
for(i=2;i<=n;i++){
if(s[i-1]+v[i]>v[i])
s[i]=s[i-1]+v[i];
else {
s[i]=v[i];
pi=i;
}
if(max<s[i]){
max=s[i];
pf=i;
pmax=pi;
}
}
fprintf(g,"%d %d %d",max,pmax,pf);
fclose(f);
fclose(g);
return 0;
}