Cod sursa(job #270061)
Utilizator | N3msiz n3msiz | Data | 3 martie 2009 18:48:56 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 85 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.57 kb |
#include<stdio.h>
int v[6000002],n,i,s[6000002],pmax,imax,pi,pimax,max;
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];
max = s[1];
imax = 1;
pi = 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 (s[i]>=max) {
max = s[i];
imax = i;
pimax = pi;
}
}
fprintf(g,"%d %d %d",max,pimax,imax);
fclose(g);
fclose(f);
return 0;
}