Cod sursa(job #675524)

Utilizator mika17Mihai Alex Ionescu mika17 Data 7 februarie 2012 18:10:05
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
#include <deque>
#include <vector>
using namespace std;
typedef int Int32;
typedef unsigned UInt32;
typedef long long Int64;

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

	UInt32 N,K;
	f>>N>>K;

	vector<Int64> sir(N);
	for(UInt32 i=0u;i<N;++i)
		f>>sir[i];

	deque< pair<UInt32,Int64> > d;

	Int64 sum = 0L;
	for(UInt32 i=0u;i<N;++i)
	{
		if(!d.empty() && i >= K && d.front().first == i - K)
			d.pop_front();
		while(!d.empty() && sir[i] < d.back().second)
			d.pop_back();
		d.push_back( pair<int,int>(i,sir[i]) );
		if(i >= K - 1)
			sum += d.front().second;
	}

	g << sum;
	return 0;
}