记录编号 |
21483 |
评测结果 |
AAAAAAAAWA |
题目名称 |
[POJ 2823]滑动窗口 |
最终得分 |
90 |
用户昵称 |
gragon |
是否通过 |
未通过 |
代码语言 |
Pascal |
运行时间 |
2.773 s |
提交时间 |
2010-11-11 07:54:35 |
内存使用 |
10.40 MiB |
显示代码纯文本
program ex;
var
a:array[1..1000000] of longint;
f:array[1..1000000,1..2] of longint;
min,max,i,j,n,k,z,r:longint;
procedure init;
begin
assign(input,'window.in');
assign(output,'window.out');
reset(input);
rewrite(output);
readln(n,k);
for i:=1 to n do read(a[i]);
close(input);
end;
begin
init;
min:=maxlongint;
max:=0;
for i:=1 to k do
begin
if a[i]<min then min:=a[i];
if a[i]>max then max:=a[i];
end;
f[1,1]:=min;
f[1,2]:=max;
i:=1;j:=k;z:=1;
while (j<n) do
begin
inc(i);inc(j);inc(z);
if (a[i-1]<>max)and(a[i-1]<>min) then
begin
if a[j]>max then max:=a[j];
if a[j]<min then min:=a[j];
end
else
begin
if (a[i-1]=max) then
begin
if (a[j]<min) then min:=a[j];
if (a[j]<max) then
begin
max:=0;
for r:=i to j do
if (a[r]>max) then max:=a[r];
end
else
max:=a[j];
end;
if (a[i-1]=min) then
begin
if (a[j]>max) then max:=a[j];
if (a[j]>min) then
begin
min:=maxlongint;
for r:=i to j do
if (a[r]<min) then min:=a[r];
end
else
min:=a[j];
end;
end;
f[z,1]:=min;
f[z,2]:=max;
end;
for i:=1 to n-k do write(f[i,1],' ');
writeln(f[n-k+1,1]);
for i:=1 to n-k do write(f[i,2],' ');
writeln(f[n-k+1,2]);
close(output);
end.