Cod sursa(job #215741)

Utilizator FllorynMitu Florin Danut Flloryn Data 20 octombrie 2008 18:42:28
Problema Secventa Scor 100
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.34 kb
 var f,g:text;  
     n,k,i,rez,st,dr,poz,j:longint;  
     er:integer;  
     s,x:string;  
     a,q:array[1..500000] of longint;  
     b:array[0..5000000] of char;  
     ok:boolean;  
 begin  
 assign(f,'secventa.in');reset(f);  
 assign(g,'secventa.out');rewrite(g);  
 readln(f,n,k);  
 read(f,b);i:=0;b[0]:='0';j:=0;  
 while b[i] in (['0'..'9']+[' ']) do  
          begin  
          inc(I);  
          inc(j);  
          a[j]:=0;  
          ok:=false;  
          if b[i]='-' then begin  
                           ok:=true;  
                           i:=i+1;  
                           end;  
          while (b[i]in ['0'..'9']) do  
                  begin  
                  a[j]:=a[j]*10+ord(b[i])-48;  
                  inc(I);  
                  end;  
          if ok then a[j]:=0-a[j];  
          end;  
 rez:=maxlongint*-1;  
 st:=1;  
 dr:=0;  
 for i:=1 to k-1 do begin  
     while (dr>=st) and (a[i]<=a[q[dr]]) do dr:=dr-1;  
     dr:=dr+1;  
     q[dr]:=i;  
 end;  
 for i:=k to n do begin  
     while (st<=dr) and (a[i]<=a[q[dr]]) do dr:=dr-1;  
     dr:=dr+1;  
     q[dr]:=i;  
     while (st<=dr) and (q[st]<i-k+1) do st:=st+1;  
     if a[q[st]]>rez then begin  
        rez:=a[q[st]];  
        poz:=i;  
     end;  
 end;  
 writeln(g,poz-k+1,' ',poz,' ',rez);  
 close(g);  
 end.