Cod sursa(job #579110)

Utilizator vendettaSalajan Razvan vendetta Data 11 aprilie 2011 21:00:00
Problema Secventa Scor 90
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.9 kb
const f = 'secventa.in'; g = 'secventa.out';
var
	max, k, n, i : longint;
	poz, ls, ld : longint;
	v, d : array[0..500005] of longint;
	buf, buf1 : array[1..1 shl 15] 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( v[i] );
	ls := 1; ld := 0;
	{for i := 1 to k - 1 do begin
		while ( ls <= ld ) and ( v[i] <= v[ d[ld] ] ) do dec( ld );
		inc( ld );
		d[ld] := i;
	end;
	}
	max := -31000;
	for i := 1 to n do begin
		while (ls <= ld ) and ( v[i] <= v[ d[ld] ] ) do dec( ld );
		inc ( ld ); d[ld] := i;
		if d[ls] = i-k then inc ( ls );
		//while (ls <= ld ) and ( d[ls] < i - k + 1 ) do inc( ls ); 
		if ( i >= k ) and ( v[ d[ls] ] > max ) then begin
			max := v[ d[ls] ] ;
			poz := i;
		end;
	end;
	
	writeln( poz - k + 1,' ',poz,' ',max );
end.