Cod sursa(job #3169961)

Utilizator cosmin983Pascale Cosmin cosmin983 Data 16 noiembrie 2023 14:18:47
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <deque>


using namespace std;


ifstream cin("deque.in");
ofstream cout("deque.out");


const int NMAX = 5e5;


long long suma;
int n, k, a[NMAX];


void read() {
	cin >> n >> k;
	for (int index = 0; index < n; ++index) {
		cin >> a[index];
	}
}


void solve() {
	deque <int> dq;


	for (int index = 0; index < k; ++index) {
		while (dq.empty() == false && a[index] < a[dq.back()]) {
			dq.pop_back();
		}
		dq.push_back(index);
	}
	suma += a[dq.front()];
	

	for (int index = k; index < n; ++index) {
		while (dq.empty() == false && a[index] < a[dq.back()]) {
			dq.pop_back();
		}
		dq.push_back(index);
		if (index - k >= dq.front()) {
			dq.pop_front();
		}
		suma += a[dq.front()];
	}
}


void display() {
	cout << suma;
}


int main() {
	read();
	solve();
	display();
	return 0;
}