Cod sursa(job #578609)

Utilizator vendettaSalajan Razvan vendetta Data 11 aprilie 2011 13:43:49
Problema Deque Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.7 kb
const f = 'deque.in'; g = 'deque.out';
const maxn = 5000010;
var
	i, n, k, front, back : longint;
	sum : int64;
	a, deque : array[ 0..maxn ] of longint;
	buf, buf1 : array[1..1 shl 17] of char;
begin
	assign( input,f ); reset( input ); 
	assign( output,g ); rewrite( output );
	settextbuf( input, buf );
	settextbuf( output, buf1 );
	readln( n, k );
		
	for i := 1 to n do read( a[i] );
	
	front := 1 ; back := 0;
	
	for i := 1 to n do	begin
		while ( front <= back ) and ( a[i] <= a[ deque[ back ] ] ) do dec( back );
		inc( back );
		deque[ back ] := i;
		if ( deque[front]  = i - k ) then inc( front );
		if ( i >= k ) then sum := sum + a[ deque[front] ];
	end;
	writeln( sum );
end.