Cod sursa(job #2887429)

Utilizator simaderalSimader Albert simaderal Data 9 aprilie 2022 16:42:10
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <stack>
#include <fstream>
#include <string>
#include <cstring>
#include <deque>
using namespace std;
//#pragma warning(disable : 4996)
ifstream in("deque.in");
ofstream out("deque.out");

#define MAX 5000010
int a[MAX], d[MAX];
//deque<int> d;
//int a[10000],
//n,
//k,
//s = 0;
//
//in >> n >> k;
//for (int i = 1; i <= n; ++i) {
//	in >> a[i];
//	while (d.size() && a[d.back()] > a[i]) {
//		d.pop_back();
//	}
//	d.push_back(i);
//	if (d.front() == i - k) d.pop_front();
//	if (i >= k) s += a[d.front()], cout << a[d.front()] << " ";
//}
//out << s;

int main(void) {
	int n,
		k,
		Front = 1,
		Back = 0;
    long long s = 0;
	in >> n >> k;
	for (int i = 1; i <= n; i++) {
        in >> a[i];
		while (Front <= Back && a[i] <= a[d[Back]]) Back--;
		d[++Back] = i;
		if (d[Front] == i - k) Front++;
		if (i >= k) s += a[d[Front]];
	}
	out << s;
}