Cod sursa(job #208161)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 14 septembrie 2008 14:44:16
Problema Secventa Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.13 kb
var v,s:array[1..1000010]of longint;
    n,min,i,k,l,p,max,a,b,c,r,o:longint;
    y:char;
    f:text;
begin
   assign(f,'secventa.in');
   reset(f);
   readln(f,n,l);
   i:=1;
   r:=1;
   o:=0;
   while not eoln(f)do
   begin
   read(f,y);
   if y='-' then r:=-1
            else
   if(ord(y)>40)then o:=o*10+ord(y)-48
                else begin o:=o*r;
                           v[i]:=o;
                           i:=i+1;
                           r:=1;
                           o:=0;
                     end;
   end;
   close(f);
   p:=1;
   s[1]:=1;
   k:=1;
   min:=-42000;
   for i:=1 to l-1 do
   begin
   while(v[s[k]]>=v[i])and(k>=p)do
   k:=k-1;
   k:=k+1;
   s[k]:=i;
   end;
   for i:=l to n do
   begin
   if s[p]<i-l+1 then p:=p+1;
   while(v[s[k]]>=v[i])and(k>=p)do
   k:=k-1;
   k:=k+1;
   s[k]:=i;
   if v[s[p]]>min then begin a:=i-l+1;
                             b:=i;
                             c:=v[s[p]];
                             min:=v[s[p]];
                       end;
   end;
   assign(f,'secventa.out');
   rewrite(f);
   writeln(f,a,' ',b,' ',c);
   close(f);
end.