Cod sursa(job #1495690)

Utilizator gedicaAlpaca Gedit gedica Data 3 octombrie 2015 13:58:18
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#include <deque>

using namespace std;

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

struct shp
{
	int poz, val;
};

deque <shp> d;

void elimin( int val )
{
	while( d.empty()==0 && d.back().val >= val )
	{
		d.pop_back();
	}
}

int main(  )
{
	int N, K, x;
	long long Ans= 0;
	shp aux;

	in >> N >> K;

	for( int i= 1; i<=K; ++i )
	{
		in >> x;
		elimin( x );
		aux.poz= i;
		aux.val= x;
		d.push_back( aux );
	}

	Ans+= d.front().val;

	for( int i= K+1; i<=N; ++i )
	{
		in >> x;
		if( d.front().poz <= i-K ) d.pop_front();
		elimin( x );
		aux.val= x;
		aux.poz= i;
		d.push_back( aux );
		Ans+= d.front().val;
	}

	out << Ans << '\n';

	return 0;
}