Cod sursa(job #2042760)

Utilizator Teodor.mTeodor Marchitan Teodor.m Data 19 octombrie 2017 01:17:25
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <bits/stdc++.h>

using namespace std;

const int NMax = 5 * 1e6 + 5;

int A[NMax];
long long int sum;

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

	int N, K;
	cin >> N >> K;
	
	deque <int> d;

	for(int i = 1; i <= N; ++i) {
		cin >> A[i];
	}

	for(int i = 1; i <= N; ++i) {
		while (!d.empty() and A[d.back()] > A[i]) {
			d.pop_back();
		}
		d.push_back(i);

		if(d.front() == i - K) {
			d.pop_front();
		}

		if(i >= K) {
			sum += A[d.front()];
		}
	}
	
	cout << sum;

	return 0;
}