Cod sursa(job #786243)

Utilizator hungntnktpHungntnktp hungntnktp Data 10 septembrie 2012 19:09:10
Problema Secventa Scor 10
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.38 kb
const
        tfi     =       'secventa.in';
        tfo     =       'secventa.out';
        Nmax    =       500001;
        vc      =       -1000000001 ;
type
        arr1    =       array[0..Nmax] of longint ;
var
        fi,fo   :       text;
        n,m,f,r,res,dau     :       longint ;
        a,st       :       arr1 ;
procedure Nhap;
var
        i,j,k :longint;
begin
        read(fi,n,m) ;
        for i := 1 to n do
         read(fi,a[i]) ;
end;
procedure Init;
var
        i,j,k: longint;
begin
        f := 1;
        r := 0;
        res := vc;
end;
procedure xuly;
var
        i,j,k: longint;
begin
        for i := n downto 1 do
         begin
                while (f <= r) and (a[i] <= a[st[r]]) do dec(r);
                while (f <= r) and (st[f] - i + 1 > m) do inc(f) ;
                inc(r);
                st[r] := i ;
                if (a[st[f]] > res) and (n -i + 1 >= m) then
                 begin
                  res := a[st[f]] ;
                  dau := i;
                 end;
         end;
end;
procedure inkq;
var
        i,j,k: longint;
begin
       write(fo,dau,' ',dau + m - 1,' ',res) ;
end;
begin
        assign(fi,tfi);reset(fi);
        assign(fo,tfo);rewrite(fo);
                  Nhap;
                  init;
                  xuly;
                  inkq;
        close(fo);
        close(fi);
end.