Cod sursa(job #84648)
Utilizator | Data | 16 septembrie 2007 11:15:06 | |
---|---|---|---|
Problema | Secventa | Scor | 80 |
Compilator | fpc | Status | done |
Runda | Arhiva de probleme | Marime | 1.83 kb |
var a,q:array[1..500000] of longint;
i,ic,d,r,poz,n,k:longint;
f1,f2:text;
c,ch:char;
begin
assign(f1,'secventa.in');
reset(f1);
assign(f2,'secventa.out');
rewrite(f2);
readln(f1,n,k);
i:=1;
while not eoln(f1) do
begin
read(f1,c);
if c=' ' then
begin
if ch='n' then a[i]:=a[i]*-1;
ch:='p';
inc(i)
end
else if c='-' then ch:='n'
else a[i]:=a[i]*10+ord(c)-48;
end;
r:=-maxlongint;
ic:=1;
d:=0;
for i:=1 to k-1 do
begin
if d>=ic then
while a[i]<=a[q[d]] do
begin
dec(d);
if d=ic-1 then break;
end;
inc(d);
q[d]:=i;
end;
for i:=k to n do
begin
if d>=ic then
while a[i]<=a[q[d]] do
begin
dec(d);
if d=ic-1 then break;
end;
inc(d);
q[d]:=i;
if d>=ic then
while q[ic]<i-k+1 do
begin
inc(ic);
if d=ic-1 then break;
end;
if a[q[ic]]>r then
begin
r:=a[q[ic]];
poz:=i;
end;
end;
write(f2,poz-k+1,' ',poz,' ',r);
close(f1);
close(f2);
end.