Cod sursa(job #1458552)

Utilizator al.mocanuAlexandru Mocanu al.mocanu Data 7 iulie 2015 21:03:06
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <stdio.h>
#include <deque>
using namespace std;

typedef struct{
	int val, poz;
} numar;

int main(){
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	int n, k, i, x;
	scanf("%d%d", &n, &k);
	numar nr;
	long long rez = 0;
	deque<numar> d;
	scanf("%d", &x);
	nr.val = x;
	nr.poz = 0;
	d.push_back(nr);
	for(i = 1; i < n; i++){
		scanf("%d", &x);
		nr.val = x;
		nr.poz = i;
		if(i >= k && i - k == d.begin()->poz)
			d.pop_front();
		while(!d.empty() && d.back().val > x)
			d.pop_back();
		d.push_back(nr);
		if(i >= k - 1)
			rez += d.begin()->val;
	}

	printf("%lld\n", rez);

	return 0;
}