Pagini recente » Cod sursa (job #1621016) | Cod sursa (job #2729057) | Cod sursa (job #2898282) | Cod sursa (job #2512296) | Cod sursa (job #973308)
Cod sursa(job #973308)
//Se cere sa se determine subsecventa de suma maxima.
#include<stdio.h>
int v[6000001];
int main()
{
FILE *Fin,*Fout;
Fin=fopen("ssm.in","r");
Fout=fopen("ssm.out","w");
int n,inceput=0,sfarsit=0,j=0,si=0,sj=0,suma=-2147483647,min=0,i;
fscanf(Fin,"%d",&n);
for(i=1;i<=n;++i)
fscanf(Fin,"%d",&v[i]);
for(i=1;i<=n+1;++i){
si+=v[i];
if(si-min==suma && sfarsit-inceput<i-j-1)
{
sfarsit=i;
inceput=j+1;
}
if(si-min>suma){
suma=si-min;
sfarsit=i;
inceput=j+1;
}
sj+=v[i-1];
if(min>sj){
min=sj;
j=i-1;
}
}
fprintf(Fout,"%d %d %d",suma,inceput,sfarsit);
fclose(Fin);
fclose(Fout);
return 0;
}