记录编号 333420 评测结果 AAAAAAAAA
题目名称 [POJ 2823]滑动窗口 最终得分 100
用户昵称 GravatarZwoi_只会打表抄代码的蒟蒻 是否通过 通过
代码语言 C 运行时间 1.435 s
提交时间 2016-10-30 18:51:29 内存使用 26.99 MiB
显示代码纯文本
  1. #include <stdio.h>
  2. typedef struct line
  3. {
  4. int num,book;
  5. }A;
  6. A b[1000010],c[1000010];
  7. int i,n,k,et,ft,eh,fh,bb[1000010],cc[1000010],b1,a[1000010],c1;
  8. int main()
  9. {
  10. freopen("window.in","r",stdin);
  11. freopen("window.out","w",stdout);
  12. scanf("%d%d",&n,&k);
  13. for(i=1;i<=n;i++)
  14. scanf("%d",a+i);
  15. eh=fh=b1=c1=1;
  16. et=ft=2;
  17. b[1].num=0x7f7f7f7f;//最小f
  18. c[1].num=0-b[1].num;//最大e
  19. for(i=1;i<=n;i++)
  20. {
  21. while((a[i]>c[et-1].num)&&et>eh)
  22. et--;
  23. c[et].num=a[i];
  24. c[et].book=i;
  25. et++;
  26. while((a[i]<b[ft-1].num)&&ft>fh)
  27. ft--;
  28. b[ft].num=a[i];
  29. b[ft].book=i;
  30. ft++;
  31. if(i>=k)
  32. {
  33. while(c[eh].book<i-k+1)
  34. eh++;
  35. while(b[fh].book<i-k+1)
  36. fh++;
  37. bb[b1]=b[fh].num;
  38. b1++;
  39. cc[c1]=c[eh].num;
  40. c1++;
  41. }
  42. }
  43. for(i=1;i<=n-k+1;i++)
  44. printf("%d ",bb[i]);
  45. printf("\n");
  46. for(i=1;i<=n-k+1;i++)
  47. printf("%d ",cc[i]);
  48. return 0;
  49. }