Cod sursa(job #300171)

Utilizator katakunaCazacu Alexandru katakuna Data 7 aprilie 2009 11:51:34
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
using namespace std;
#include <cstdio>
#include <deque>

#define Nmax 5000010

deque <int> D;
int n, k, i, v[Nmax];
long long sol;


int main(){

	FILE *f = fopen("deque.in", "r");
	FILE *g = fopen("deque.out", "w");

	fscanf(f,"%d %d", &n, &k);
	for(i = 1; i <= n; i++)
		fscanf(f,"%d", &v[i]);
	
	D.push_back(1);
	for( i = 2; i <= n ; i++){
		
		while( D.front() <= i - k && !D.empty() )
			D.pop_front();
		
		while( v[i] <= v[ D.back() ] && !D.empty() )
			D.pop_back();
		
		D.push_back(i);
		
		if(i >= k)
			sol+= (long long)v[ D.front() ];
	}
	
	fprintf(g,"%d", sol);
	
	fclose(f);
	fclose(g);
	
	return 0;
}