Cod sursa(job #1750890)

Utilizator delia_ioanaCeapa Delia Ioana delia_ioana Data 31 august 2016 13:40:06
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <cstdio>
#include <cstring>
#include <iostream>

using namespace std;

int main() {
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	int nums[500010], deque[500010];
	int n, k, front = 1, back = 0;
	long long sum = 0;

	scanf("%d %d", &n, &k);

	for (int i = 1; i <= n; i ++) 
		scanf("%d", &nums[i]);

	for (int i = 1; i <= n; i ++) {
		while (front <= back && nums[i] <= nums[deque[back]])
			back --;

		deque[++back] = i;

		if (deque[front] == i - k)
			front ++;
		if (i >= k)
			sum += nums[deque[front]];
	}

	printf("%lli\n", sum);

	return 0;
}