Cod sursa(job #6279)

Utilizator vanila0406Ionescu Victor vanila0406 Data 18 ianuarie 2007 17:49:39
Problema Secventa Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.23 kb
program secventa;
var f,g:text;
        a,v:array[1..500007] of longint;
        n,k:longint;





procedure iofile;
var i:longint;
begin
        assign(f,'secventa.in');
        reset(f);
        assign(g,'secventa.out');
        rewrite(g);
        readln(f,n,k);
        for i:=1 to n do
                begin
                        read(f,a[i]);
                end;
        close(f);
end;



procedure prel;
var st,dr,i,max,pin:longint;
begin
     st:=1;
     dr:=1;
     v[1]:=1;
     for i:=2 to k-1 do
        begin
                while (a[i]<=a[v[dr]])and(st<=dr) do
                        dec(dr);
                inc(dr);
                v[dr]:=i;
        end;
     max:=0;
     pin:=0;
     for i:=k to n do
      begin
        while (a[i]<=a[v[dr]])and(st<=dr) do
                dec(dr);
        inc(dr);
        v[dr]:=i;
        while (v[st]<i-k+1)and(st<dr) do
                inc(st);
        if v[st]>=i-k+1 then
           if a[v[st]]>max then
                begin
                        max:=a[v[st]];
                        pin:=i-k+1;
                end;
      end;
     writeln(g,pin,' ',pin+k-1,' ',max);
     close(g);
end;


begin
        iofile;
        prel;
end.