Cod sursa(job #904562)

Utilizator tudorv96Tudor Varan tudorv96 Data 4 martie 2013 16:27:22
Problema Deque Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <deque>
using namespace std;

struct DEQUE {
	long int v, p;
};

deque <DEQUE> D;

DEQUE init (long int x, long int i)
{
	DEQUE a;
	a.v = x, a.p = i;
	return a;
}

long int v[5000005], n, k, s;

int main ()
{
	ifstream fin ("deque.in");
	fin >> n >> k;
	for (int i = 0; i < n; ++i)
		fin >> v[i];
	fin.close();
	D.push_front (init (v[0], 0));
	for (int i = 1; i < k; ++i)
		if (v[i] <= D.front().v)
			D.push_front(init (v[i], i));
		else
		{
			while (v[i] < D.back().v)
				D.pop_back();
			D.push_back (init (v[i], i));
		}
	s = D.front().v;
	for (int i = k; i < n; ++i)
	{
		while (v[i] < D.back().v)
			D.pop_back();
		D.push_back (init (v[i], i));
		while (D.front().p + k <= i)
			D.pop_front();
		s += D.front().v;
	}
	ofstream fout ("deque.out");
	fout << s;
	fout.close();
	return 0;
}