Cod sursa(job #1218304)

Utilizator andreas.chelsauAndreas Chelsau andreas.chelsau Data 10 august 2014 13:58:56
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <iostream>
#include <cstdio>
#include <deque>
using namespace std;
typedef long long ll;

deque<ll> queue;
ll a[5000010];
int n,k;
void solve(){
	ll sum = 0;
	for(int i = 0; i < n; i++){
		if(queue.size() > 0 && (i - queue.front()) >= k)
			queue.pop_front();

		while(queue.size() > 0){
			if(a[queue[queue.size() - 1]] >= a[i])
				queue.pop_back();
			else
				break;
		}
		
		queue.push_back(i);
		if(i > k - 2){
			sum += a[queue.front()];
		}
	}
	printf("%lld\n",sum);

}
int main(){
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	scanf("%d%d",&n,&k);
	for(int i = 0; i < n; i++)
		scanf("%lld",&a[i]);
	solve();
	return 0;
}