Cod sursa(job #2511902)

Utilizator radustn92Radu Stancu radustn92 Data 20 decembrie 2019 02:41:54
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <cstdio>
#include <deque>
#include <algorithm>
using namespace std;

struct entry {
	int val, originalPos;
};

int N, K;
deque<entry> ordered;

int main() {
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);

	scanf("%d%d", &N, &K);
	int x;
	long long result = 0;
	for (int i = 1; i <= N; i++) {
		if (i > K && ordered.front().originalPos == i - K) {
			ordered.pop_front();
		}

		scanf("%d", &x);
		while (!ordered.empty() && x < ordered.back().val) {
			ordered.pop_back();
		}
		ordered.push_back({x, i});

		if (i >= K) {
			result += ordered.front().val;
		}
	}

	printf("%lld\n", result);
	return 0;
}