Cod sursa(job #2044455)

Utilizator Alex_AmarandeiAmarandei Matei Alexandru Alex_Amarandei Data 21 octombrie 2017 10:09:14
Problema Deque Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <fstream>
#include <deque>

using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");

long long int n, k, nr, sum, v[5000005];

deque <long long int> dq;

int main()
{
	long long int i, j;

	fin >> n >> k;

	for (i = 1; i <= n; i++)
		fin >> v[i];
	
	dq.push_front(1);

	for (i = 2; i < k; ++i)
	{
		while (v[i] < v[dq.back()])
			dq.pop_back();

		dq.push_back(i);
	}

	for (i = k; i <= n; ++i) 
	{
		if (dq.front() == i - k)
		{
			dq.pop_front();
		}

		while (!dq.empty() && v[i] < v[dq.back()])
			dq.pop_back();

		dq.push_back(i);

		sum += v[dq.front()];
	}

	fout << sum << '\n';


	return 0;
}