Cod sursa(job #601824)

Utilizator dacyanMujdar Dacian dacyan Data 7 iulie 2011 23:01:28
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
#include <deque>
#define DIM 5000001
using namespace std;

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

deque<long long> Q;
long long a[DIM];
long long sol, n, k;
long long cap, coada;

int main()
{
	fin >> n >> k;
	for (int i = 1; i <= n; ++i)
		fin >> a[i];
	
	for (int i = 1; i <= n; ++i)
	{
		while (!Q.empty() && a[i] <= a[Q.back()])
			Q.pop_back();
		Q.push_back(i); // il punem in coada dupa ce scoatem toate elem mai mari
		
		if (Q.front() == i - k) Q.pop_front();
		
		if (i < k) continue;
		sol += a[Q.front()];
	}
	fout << sol << '\n';
	fin.close();
	fout.close();
	return 0;
}