Cod sursa(job #208158)

Utilizator GavrilaVladGavrila Vlad GavrilaVlad Data 14 septembrie 2008 14:40:05
Problema Secventa Scor 80
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.09 kb
var v,s:array[1..500010]of longint;
    n,min,i,k,l,p,max,a,b,c,r:longint;
    y:char;
    f:text;
begin
   assign(f,'secventa.in');
   reset(f);
   readln(f,n,l);
   i:=1;
   r:=1;
   while not eoln(f)do
   begin
   read(f,y);
   if y='-' then r:=-1
            else
   if(y in ['0'..'9'])then v[i]:=v[i]*10+ord(y)-48
                      else begin v[i]:=v[i]*r;
                                 i:=i+1;
                                 r:=1;
                           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.