Cod sursa(job #529400)

Utilizator tudorsTudor Siminic tudors Data 4 februarie 2011 21:41:49
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <fstream>
#include <deque>
#define ma 5000002
using namespace std;
int A[ma];
int i,n,k;
long long s;

ifstream f("deque.in");
ofstream g("deque.out");

void citire()
{
	f>>n>>k;
	for (i=1;i<=n;i++)
		f>>A[i];
	f.close();
}

void afisare()
{
	g<<s;
	g.close();
}

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

int main()
{
	citire();
	rezolv();
	afisare();
	return 0;
}