Cod sursa(job #966677)

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

#define MAX_SIZE 500001

int main() {
	
	std::deque<int> dq;
	std::deque<int>::iterator it = dq.begin();
	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(it != dq.end() && 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;
}