Cod sursa(job #1323485)

Utilizator pepsiM4A1Ozturk Arif pepsiM4A1 Data 21 ianuarie 2015 09:00:26
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include <stdio.h>
#include <deque>
std::deque<int> pos,val;
int n,k;
int nr;
int main()
{
	freopen ("deque.in","r",stdin);
	freopen ("deque.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i=1;i<=k;i++)
	{
		scanf("%d",&nr);
		while(!val.empty()&&val.back()>=nr)
		{
			val.pop_back();
			pos.pop_back();
		}
		val.push_back(nr);
		pos.push_back(i);
	}
	long long int sum=val.front();
	for(int i=k+1;i<=n;i++)
	{
		if(pos.front()==i-k)
		{
			val.pop_front();
			pos.pop_front();
		}
		scanf("%d",&nr);
		while(!val.empty()&&val.back()>nr) 
		{
			val.pop_back();
			pos.pop_back();
		}
		val.push_back(nr);
		pos.push_back(i);
		sum+=val.front();
	}
	printf("%lld\n",sum);
}