记录编号 21483 评测结果 AAAAAAAAWA
题目名称 [POJ 2823]滑动窗口 最终得分 90
用户昵称 Gravatargragon 是否通过 未通过
代码语言 Pascal 运行时间 2.773 s
提交时间 2010-11-11 07:54:35 内存使用 10.40 MiB
显示代码纯文本
  1. program ex;
  2. var
  3. a:array[1..1000000] of longint;
  4. f:array[1..1000000,1..2] of longint;
  5. min,max,i,j,n,k,z,r:longint;
  6.  
  7. procedure init;
  8. begin
  9. assign(input,'window.in');
  10. assign(output,'window.out');
  11. reset(input);
  12. rewrite(output);
  13. readln(n,k);
  14. for i:=1 to n do read(a[i]);
  15. close(input);
  16. end;
  17.  
  18. begin
  19. init;
  20. min:=maxlongint;
  21. max:=0;
  22. for i:=1 to k do
  23. begin
  24. if a[i]<min then min:=a[i];
  25. if a[i]>max then max:=a[i];
  26. end;
  27. f[1,1]:=min;
  28. f[1,2]:=max;
  29. i:=1;j:=k;z:=1;
  30. while (j<n) do
  31. begin
  32. inc(i);inc(j);inc(z);
  33. if (a[i-1]<>max)and(a[i-1]<>min) then
  34. begin
  35. if a[j]>max then max:=a[j];
  36. if a[j]<min then min:=a[j];
  37. end
  38. else
  39. begin
  40. if (a[i-1]=max) then
  41. begin
  42. if (a[j]<min) then min:=a[j];
  43. if (a[j]<max) then
  44. begin
  45. max:=0;
  46. for r:=i to j do
  47. if (a[r]>max) then max:=a[r];
  48. end
  49. else
  50. max:=a[j];
  51. end;
  52. if (a[i-1]=min) then
  53. begin
  54. if (a[j]>max) then max:=a[j];
  55. if (a[j]>min) then
  56. begin
  57. min:=maxlongint;
  58. for r:=i to j do
  59. if (a[r]<min) then min:=a[r];
  60. end
  61. else
  62. min:=a[j];
  63. end;
  64. end;
  65. f[z,1]:=min;
  66. f[z,2]:=max;
  67. end;
  68. for i:=1 to n-k do write(f[i,1],' ');
  69. writeln(f[n-k+1,1]);
  70. for i:=1 to n-k do write(f[i,2],' ');
  71. writeln(f[n-k+1,2]);
  72. close(output);
  73. end.