Cod sursa(job #213581)

Utilizator madmanjonesJones the one madmanjones Data 10 octombrie 2008 15:39:36
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
var v,s,q:array[1..700010]of longint;
    y:array[0..4000000]of char;
    n,j,m,i,k,l,p,max,a,b,c,r,o:longint;
    f:text;
begin
   assign(f,'secventa.in');
   reset(f);
   readln(f,n,l);
   i:=1;
   j:=1;
   readln(f,y);
   while(y[j]<>chr(0))do
   begin
   if y[j]='-' then r:=-1
               else
   if(ord(y[j])>32)then o:=o*10+ord(y[j])-48
                else begin v[i]:=o*r;
                           i:=i+1;
                           r:=1;
                           o:=0;
                     end;
   j:=j+1;
   end;
   v[i]:=o*r;
   close(f);
   p:=1;
   s[1]:=1;
   k:=1;
   q[1]:=v[1];
   m:=-42000;
   for i:=2 to l-1 do
   begin
   while(q[k]>=v[i])and(k>=p)do
   k:=k-1;
   k:=k+1;
   s[k]:=i;
   q[k]:=v[i];
   end;
   for i:=l to n do
   begin
   if s[p]<i-l+1 then p:=p+1;
   while(q[k]>=v[i])and(k>=p)do
   k:=k-1;
   k:=k+1;
   s[k]:=i;
   q[k]:=v[i];
   if q[p]>m then begin a:=i-l+1;
                        b:=i;
                        m:=q[p];
                  end;
   end;
   assign(f,'secventa.out');
   rewrite(f);
   writeln(f,a,' ',b,' ',m);
   close(f);
end.