Cod sursa(job #1491544)

Utilizator dimavascan94VascanDumitru dimavascan94 Data 25 septembrie 2015 17:17:58
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <deque>
#include <iostream>
using namespace std;

deque<int> vals, poss;
int n, k, i, nmb, min_nmb, j;
long long sum = 0;

int main()
{
	freopen("deque.in", "r", stdin);
	freopen("deque.out", "w", stdout);
	scanf("%d%d",&n,&k);

	for (i = 0; i < n; ++i)
	{
		min_nmb = 10000001;
		scanf("%d",&nmb);

		while (vals.size()>0 && vals.at(vals.size() - 1) >= nmb)
			vals.pop_back(), poss.pop_back();

		while (poss.size()>0 && poss.at(0) < i - k + 1) poss.pop_front(), vals.pop_front();

		vals.push_back(nmb), poss.push_back(i);

		if (i + 1 >= k)	sum += vals.at(0);
	}

	cout << sum;
}