Cod sursa(job #703621)

Utilizator auRSTARHreapca Aurelian auRSTAR Data 2 martie 2012 13:15:25
Problema Secventa 2 Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include<cstdio>
#define max(a,b) a>b?a:b
void read(),solve();
int N,K,SM[50010],SMK[50010],A[50010],S[50010],i,st,dr,sol,cnt;
int main()
{
	read();
	solve();
	return 0;
}
void read()
{
	freopen("secv2.in","r",stdin);
	freopen("secv2.out","w",stdout);
	scanf("%d%d",&N,&K);
	for(i=1;i<=N;i++)
	{
		scanf("%d",&A[i]);
		SM[i]=A[i];S[i]=i;
		if(SM[i]<SM[i-1]+A[i])
		{
			SM[i]=SM[i-1]+A[i];
			S[i]=S[i-1];
		}
		SMK[i]=SMK[i-1]+A[i];
		if(i<=K)continue;
		SMK[i]-=A[i-K];
	}
}
void solve()
{
	for(i=K;i<=N;i++)
	{
		if(sol<SMK[i])
		{
			sol=SMK[i];
			st=i-K+1;
			dr=i;
		}
		if(sol<SMK[i]+SM[i-K])
		{
			sol=SMK[i]+SM[i-K];
			st=S[i-K];
			dr=i;
		}
	}
	printf("%d %d %d ",st,dr,sol);
}