Cod sursa(job #374540)

Utilizator pirvupirvu tudor pirvu Data 17 decembrie 2009 13:24:53
Problema Deque Scor 15
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<cstdio>

int n,k,st,dr,j,min;

int dq[5000001];
int v[5000001];

long long sum;

inline void stanga(int i)
{
	if (dq[st]==i-k) 
		++st;
}

void dreapta (int i)
{
	while(st<=dr && v[i]<=v[dq[dr]] ) 
		--dr;
	
	dq[++dr]=i;
	
}


int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	
	scanf("%d%d", &n, &k);
	
	for (j=1;j<=n;j++)
		scanf("%d\n", &v[j]);
	
	
	
	st=1;
	dr=k;
	

	
	for (j=1;j<=k;j++)
	{
		stanga(j);
		dreapta(j);
	}
	
	
	for (j=k;j<=n;j++)
	{
		stanga(j);
		dreapta(j);
		sum+=(long long)(v[dq[st]]);
		
	}
	
	printf("%lld", sum);
	
	
	return 0;
}