Pagini recente » Cod sursa (job #3222518) | Cod sursa (job #1027471) | Cod sursa (job #41993) | Cod sursa (job #1050190) | Cod sursa (job #317204)
Cod sursa(job #317204)
#include <stdio.h>
#define N 8192
#define M 50001
char b[N];
int sum[M];
int bi,n,k;
int citeste()
{int nr=0,semn=1;
while(!isdigit(b[bi])&&b[bi]!='-')
{bi++;
if(b[bi]==NULL)
{if(fgets(b,N,stdin)==NULL)
{return semn*nr;
}
bi=0;
}
}
if(b[bi]=='-')
{semn=-1;
if(b[++bi]==NULL)
{if(fgets(b,N,stdin)==NULL)
{return semn*nr;
}
bi=0;
}
}
while(isdigit(b[bi]))
{nr=nr*10+b[bi]-'0';
if(b[++bi]==NULL)
{if(fgets(b,N,stdin)==NULL)
{return semn*nr;
}
bi=0;
}
}
return semn*nr;
}
int main ()
{freopen("secv2.in","r",stdin);
freopen("secv2.out","w",stdout);
n=citeste();
k=citeste();
int i,max=-2000000000,maxs,maxe,s=0,ss=1;
for (i=1;i<=n;i++)
{sum[i]=sum[i-1]+citeste();
}
for (i=1;i<=n-k+1;i++)
{if(s+sum[i+k-1]-sum[i-1]>max)
{max=s+sum[i+k-1]-sum[i-1];
maxs=ss;
maxe=i+k-1;
}
if(s+sum[i]-sum[i-1]>0)
{s+=sum[i]-sum[i-1];
}
else
{s=0;
ss=i+1;
}
}
printf("%d %d %d",maxs,maxe,max);
return 0;
}