Cod sursa(job #2007510)

Utilizator trifangrobertRobert Trifan trifangrobert Data 3 august 2017 03:07:53
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#include <deque>
#define INPUT_FILE "deque.in"
#define OUTPUT_FILE "deque.out"
#define DIMENSION 5000010

using namespace std;

int n, k;
int v[DIMENSION];
long long s = 0;

void Read()
{
	ifstream f(INPUT_FILE);
	f >> n >> k;
	for (int i = 1;i <= n;++i)
		f >> v[i];
	f.close();
}

void Solve()
{
	deque<int> a;
	for (int i = 1;i <= n;++i)
	{
		while (!a.empty() && v[a.back()] >= v[i])
			a.pop_back();
		a.push_back(i);
		if (a.front() == i - k)
			a.pop_front();
		if (i >= k)
			s += v[a.front()];
	}

}

void Write()
{
	ofstream g(OUTPUT_FILE);
	g << s << "\n";
	g.close();
}

int main()
{
	Read();
	Solve();
	Write();
	return 0;
}