Cod sursa(job #300189)

Utilizator katakunaCazacu Alexandru katakuna Data 7 aprilie 2009 11:54:32
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 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.empty() && D.front() <= i - k )
			D.pop_front();
		
		while( !D.empty() && v[i] <= v[ D.back() ] )
			D.pop_back();
		
		D.push_back(i);
		
		if(i >= k)
			sol+= (long long)v[ D.front() ];
	}
	
	fprintf(g,"%lld", sol);
	
	fclose(f);
	fclose(g);
	
	return 0;
}