Cod sursa(job #1364218)

Utilizator BLz0rDospra Cristian BLz0r Data 27 februarie 2015 15:51:02
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <cstdio>
#include <deque>
using namespace std;

#define Nmax 5000002

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

deque < int > Q;
int v[Nmax];

int main(){
	int N, K;
	long long s = 0;
	
	fscanf ( f,"%d%d", &N ,&K );
	
	for ( int i = 1 ; i <= N; ++i ){
		fscanf ( f, "%d", &v[i] );
		
		while ( !Q.empty() && v[i] <= v[Q.back()] )
			Q.pop_back();
		
		Q.push_back ( i );
		
		if ( Q.front() <= i - K )
			Q.pop_front();
		
		if ( i >= K )
			s += v[Q.front()];
		
	}
	
	fprintf ( g, "%lld", s );
	
	return 0;
}