Cod sursa(job #3172345)

Utilizator robeteaRobert Cristea robetea Data 20 noiembrie 2023 15:04:19
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>

// void print_deque(std::deque<int>& d, int* p) {
// 	for(auto x : d) std::cout << x << '[' << p[x] << ']' << '\t'; std::cout << std::endl;
// }

int main() { 
	std::ios_base::sync_with_stdio(0);
	std::cin.tie(0); std::cout.tie(0);

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

	int n, k; std::cin >> n >> k;
	long long sum = 0;
	std::vector<int> arr(n); for(auto& x : arr) std::cin >> x;
	std::deque<int> deck(0);

	for(int i = 0; i < n; i++) {
		while(!deck.empty() && arr[deck.back()] >= arr[i]) deck.pop_back();
		deck.push_back(i);

		if(deck.front() == i - k) deck.pop_front();
		//print_deque(deck, arr.data());

		if(i >= k - 1) sum += (long long)arr[deck.front()];
	}

	std::cout << sum;
	return 0;
}