Cod sursa(job #2032833)

Utilizator SlevySlevoaca Stefan-Gabriel Slevy Data 5 octombrie 2017 19:14:20
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <iostream>
#include <fstream>
#include <queue>
#define NMAX  5000001

using namespace std;

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

int v[NMAX];
deque<int> deck;

int main() {

	int n, k, x;
	long long int sum = 0;
	in >> n >> k;
	
	for (int i = 1; i <= n; i++)
		in >> v[i];
	in.close();

	for (int i = 1; i <= n; i++) {

		while (!deck.empty() && v[deck.back()] >= v[i])
			deck.pop_back();
		deck.push_back(i);

		if (deck.front() == i - k)
			deck.pop_front();

		if (i >= k)
			sum += (1LL * v[deck.front()]);

	}

	out << sum << "\n";
	out.close();
	return 0;
}