Cod sursa(job #313265)

Utilizator crisojogcristian ojog crisojog Data 8 mai 2009 16:19:53
Problema Secventa 2 Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#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);
}