Cod sursa(job #966678)

Utilizator Cezar_16Cezar Ghimbas Cezar_16 Data 26 iunie 2013 13:59:43
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include<stdio.h>
#include<deque>
#include<iostream>

#define MAX_SIZE 500001

int main() {
	
	std::deque<int> dq;
	int num[MAX_SIZE], n, k;
	long long s = 0;
	
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	
	scanf("%d %d", &n, &k);
	
	for(int i = 1; i <= n; i++)
		scanf("%d", &num[i]);
	
	for(int i = 1; i <= n; i++) {
		while(dq.size() && num[i] <= num[dq.back()])
			dq.pop_back();
			
		dq.push_back(i);
		
		if(dq.front() == i - k)
			dq.pop_front();
		if(i >= k)
			s += num[dq.front()];
	}
	printf("%lld", s);
	
	return 0;
}