Cod sursa(job #426187)

Utilizator mottyMatei-Dan Epure motty Data 26 martie 2010 15:57:14
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<cstdio>
#include<vector>
#include<deque>
using namespace std;

int n,k;

long long rez;

vector <int> v;

deque <int> q;

void read()
{
	int x;
	scanf("%d%d",&n,&k);
	for( int i=1 ; i<=n ; ++i )
	{
		scanf("%d",&x);
		v.push_back(x);
	}
}

void back( int poz )
{
	while( !q.empty() && v[q.back()]>v[poz] )
		q.pop_back();
	q.push_back(poz);
}

void front( int poz )
{
	if( poz-k==q.front() )
		q.pop_front();
}

void parc()
{
	for( int i=0 ; i<k-1 ; ++i )
		back(i);
	for( int i=k-1 ; i<n ; ++i )
	{
		front(i);
		back(i);
		rez+=v[q.front()];
	}
}

int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
	
	read();
	parc();
	printf("%lld",rez);
	
	return 0;
}