记录编号 21604 评测结果 AAAAAAAAWA
题目名称 [POJ 2823]滑动窗口 最终得分 90
用户昵称 GravatarDes. 是否通过 未通过
代码语言 Pascal 运行时间 2.226 s
提交时间 2010-11-11 21:18:40 内存使用 20.71 MiB
显示代码纯文本
program window;
var min,max:array[1..1000000,1..2]of longint;
    mini,minj,maxi,maxj,t,k,m,n,i,j,p:longint;
    ans1,ans2:array[1..1000000]of longint;
begin
assign(input,'window.in');
reset(input);
assign(output,'window.out');
rewrite(output);
readln(n,k);
read(i);
max[1,1]:=i;
min[1,1]:=i;
max[1,2]:=1;
min[1,2]:=1;
maxi:=1;
mini:=1;
maxj:=1;
minj:=1;
for t:=2 to n do
  begin
    read(i);
    if min[mini,1]>=i then
      begin
        inc(minj);
        mini:=minj;
        min[mini,1]:=i;
        min[mini,2]:=t;
      end
    else
      begin
        inc(minj);
        min[minj,1]:=i;
        min[minj,2]:=t;
      end;
    if max[maxi,1]<=i then
      begin
        inc(maxj);
        maxi:=maxj;
        max[maxi,1]:=i;
        max[maxi,2]:=t;
      end
    else
      begin
        inc(maxj);
        max[maxj,1]:=i;
        max[maxj,2]:=t;
      end;
    while (i<=min[minj-1,1])and(minj>mini) do dec(minj);
    while (i>=max[maxj-1,1])and(maxj>maxi) do dec(maxj);
    min[minj,1]:=i;
    min[minj,2]:=t;
    max[maxj,1]:=i;
    max[maxj,2]:=t;
    if min[mini,2]<=t-k then
      inc(mini);
    if max[maxi,2]<=t-k then
      inc(maxi);
    if t>=k then
      begin
        inc(p);
        ans1[p]:=min[mini,1];
        ans2[p]:=max[maxi,1];
      end;
  end;
for t:=1 to p do
  write(ans1[t],' ');
writeln;
for t:=1 to p do
  write(ans2[t],' ');
close(output);
end.