Cod sursa(job #1283985)
Utilizator | Popovici Robert PopoviciRobert | Data | 6 decembrie 2014 10:02:28 |
---|---|---|---|
Problema | Subsecventa de suma maxima | Scor | 95 |
Compilator | c | Status | done |
Runda | Arhiva educationala | Marime | 0.7 kb |
#include <stdio.h>
#include <stdlib.h>
int s[6000001];
int main()
{ FILE*fi,*fout;
int nr,ultim,i,max,n;
fi=fopen("ssm.in" ,"r");
fout=fopen("ssm.out" ,"w");
fscanf(fi,"%d" ,&n);
ultim=0;
max=0;
for(i=1;i<=n;i++){
fscanf(fi,"%d" ,&nr);
if(s[i-1]+nr>max){
ultim=i;
max=s[i-1]+nr;
}
else
if(s[i]>max){
ultim=i;
max=s[i];
}
if(s[i-1]+nr>nr)
s[i]=s[i-1]+nr;
else
s[i]=nr;
}
nr=ultim;
while(nr>0&&s[nr]>=0)
nr--;
fprintf(fout,"%d %d %d" ,max,nr+1,ultim);
fclose(fi);
fclose(fout);
return 0;
}