poj 2823 Sliding Window(单调队列)
来源:互联网 发布:nodejs 返回json对象 编辑:程序博客网 时间:2024/05/06 10:18
用C++5293msA掉了,用G++就超时。
今天机房蚊子怎么这么多,咬死我了。
#include<stdio.h>#include<string.h>#define N 1000005int a[N],Mi[N],Ma[N];int ans1[N],ans2[N];int main(){ int n,t; while(scanf("%d%d",&n,&t)!=EOF) { int i,j; for(i=1;i<=n;i++) scanf("%d",&a[i]); int mihead,mitail,mahead,matail; mihead=mitail=mahead=matail=0; for(i=1;i<=t;i++) { while(mihead<mitail&&a[i]<a[Mi[mitail-1]]) mitail--; Mi[mitail++]=i; while(mahead<matail&&a[i]>a[Ma[matail-1]]) matail--; Ma[matail++]=i; } j=1;ans1[j]=a[Mi[mihead]];ans2[j]=a[Ma[mahead]];j++; for(i=t+1;i<=n;i++) { if(i-t==Mi[mihead]&&mihead!=mitail) mihead++; if(i-t==Ma[mahead]&&mahead!=matail) mahead++; while(mihead<mitail&&a[i]<a[Mi[mitail-1]]) mitail--; Mi[mitail++]=i; while(mahead<matail&&a[i]>a[Ma[matail-1]]) matail--; Ma[matail++]=i;ans1[j]=a[Mi[mihead]];ans2[j]=a[Ma[mahead]];j++; } for(i=1;i<j-1;i++) printf("%d ",ans1[i]); printf("%d\n",ans1[i]); for(i=1;i<j-1;i++) printf("%d ",ans2[i]); printf("%d\n",ans2[i]); } return 0;}
- poj 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- poj 2823 Sliding Window(单调队列)
- poj 2823 Sliding Window ( 单调队列 )
- POJ 2823 Sliding Window (单调队列)
- poj 2823 Sliding Window(单调队列)
- poj - 2823 - Sliding Window(单调队列)
- POJ 2823 Sliding Window (单调队列)
- POJ 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window (单调队列)
- POJ 2823 Sliding Window(单调队列)
- poj 2823 Sliding Window(单调队列)
- POJ 2823 Sliding Window(单调队列)
- [POJ 2823] Sliding Window (单调队列)
- 【POJ 2823】Sliding Window(单调队列)
- 对于别人做好的数据库如何加快认识?
- "4+1" 视图
- 使用fdisk命令对linux硬盘进行操作
- CWnd和HWND的区别
- 使用parted命令对linux硬盘进行操作
- poj 2823 Sliding Window(单调队列)
- mac 删除文件夹里所有的.svn文件
- SQLITE
- glusterfs内存池
- 数据结构——哈希表/散列表
- 减轻上网压力的必备武器之wifi网盘
- c++ list vector
- JAVA net之TCP
- Letter Combinations of a Phone Number