Cod sursa(job #601825)

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

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

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


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;
}