Cod sursa(job #1851306)

Utilizator zhm248Mustatea Radu zhm248 Data 19 ianuarie 2017 16:59:53
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<cstdio>
#include<queue>
using namespace std;
typedef pair<int,int>ii;
deque<ii>q;
const int nmax=1000000;
int v[nmax+1];
int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	int n,i,k;
	long long s=0;
	scanf("%d%d",&n,&k);
	for(i=1;i<=n;++i)
	{
		scanf("%d",&v[i]);
	}
	for(i=1;i<=n;++i)
	{
		while(!q.empty()&&q.back().first>=v[i])
		{
			q.pop_back();
		}
		q.push_back(ii(v[i],i));
		while(!q.empty()&&i-q.front().second+1>k)
		{
			q.pop_front();
		}
		if(i>=k)
			s+=1LL*q.front().first;
	}
	printf("%lld\n",s);
	return 0;
}