Cod sursa(job #2410177)

Utilizator LucaSeriSeritan Luca LucaSeri Data 19 aprilie 2019 19:52:26
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.61 kb
#include <bits/stdc++.h>
 
using namespace std;

int main() {
	#ifdef BLAT
		freopen("input", "r", stdin);
	#else
		freopen("deque.in", "r", stdin);
		freopen("deque.out", "w", stdout);
	#endif
 
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);

	int n, k;
	cin >> n >> k;
	long long ans = 0;

	deque< pair< int, int > > dq;
	for(int i = 1; i <= n; ++i) {
		int x;
		cin >> x;
		while(dq.size() && x < dq.back().first) dq.pop_back();
		while(dq.size() && dq.front().second <= i) dq.pop_front();
		dq.push_back(make_pair(x, i + k));

		if(i >= k) {
			ans += dq.front().first;
		}
	} 

	cout << ans << '\n';
	return 0;
}