Pagini recente » Cod sursa (job #1211587) | Cod sursa (job #2512887) | Cod sursa (job #1915275) | Cod sursa (job #2604782) | Cod sursa (job #313265)
Cod sursa(job #313265)
#include<stdio.h>
long n,k,i,s,smax,is,sfm,im,j,dist,sm,imp,sfmp;
long v[50010];
int main()
{
freopen("secv2.in","r",stdin);
freopen("secv2.out","w",stdout);
scanf("%ld%ld",&n,&k);
for(i=1;i<=n;++i) scanf("%ld",&v[i]);
s=smax=v[1];
is=sfm=1;
for(i=1;i<=n;++i)
{
if(s+v[i]>v[i])
s+=v[i];
else
{
s=v[i];
is=i;
}
if(s>smax)
{
smax=s;
im=is;
sfm=i;
}
}
if(sfm-im+1<k)
{
dist=k-sfm+im-1;
sm=0;
for(i=0;i<=dist;++i)
{
s=smax;
if(im-i>0 && sfm+(dist-i)<=n)
{
for(j=im-i;j<im;++j) s+=v[j];
for(j=sfm+1;j<=sfm+(dist-i);++j) s+=v[j];
if(s>sm) {sm=s;imp=im-i;sfmp=sfm+(dist-i);}
}
}
im=imp;sfm=sfmp;smax=sm;
}
printf("%ld %ld %ld\n",im,sfm,smax);
}