用大根堆和小根堆分别存放前$i-1$大的元素前$k-i$小的元素。 将当前序列的元素压入最小堆,如果最小堆的最小数大于最大堆的最大数则进行交换,保证最大堆中的所有数小于最小堆。 因为$i$值每进行一次自增$1$,所以每次$get$操作后将小根堆顶弹出存入大根堆。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cctype>
#include<cstdlib>
#include<vector>
#include<queue>
#include<map>
#include<set>
#define ull unsigned long long
#define ll long long
#define R register int
using namespace std;
namespace Fread {
static char B[<<],*S=B,*D=B;
#define getchar() (S==D&&(D=(S=B)+fread(B,1,1<<15,stdin),S==D)?EOF:*S++)
inline int g() {
R ret=,fix=; register char ch; while(!isdigit(ch=getchar())) fix=ch=='-'?-:fix;
do ret=ret*+(ch^); while(isdigit(ch=getchar())); return ret*fix;
} inline bool isempty(const char& ch) {return ch<=||ch>=;}
inline void gs(char* s) {register char ch; while(isempty(ch=getchar())); do *s++=ch; while(!isempty(ch=getchar()));}
}using Fread::g; using Fread::gs;
priority_queue<int> bq;
priority_queue<int,vector<int>,greater<int> > sq;
int a[];
int n,m;
signed main() {
#ifdef JACK
freopen("NOIPAK++.in","r",stdin);
#endif
n=g(),m=g(); for(R i=;i<=n;++i) a[i]=g();
R k=; for(R i=;i<=m;++i) {
R x=g(); while(k<=x) {
sq.push(a[k]); if(bq.size()&&bq.top()>sq.top()) {
R tmp=bq.top(); bq.pop(); sq.push(tmp);
tmp=sq.top(); sq.pop(); bq.push(tmp);
} ++k;
} printf("%d\n",sq.top());
R tmp=sq.top(); sq.pop(); bq.push(tmp);
}
}

2019.06.13

最新文章

  1. [CentOS] 指定命令别名:Alias &amp; 软链接生成命令 ln -s
  2. Python 基础之在ubuntu系统下安装双版本python
  3. 【学】jQuery的源码思路5——增加class的操作
  4. nginx url 重写
  5. xenserver磁盘扩容扩不大问题解决
  6. AX2009按照批次生产日期预留
  7. HTML 5 中的标准属性
  8. PLSQL_Oracle簇表和簇表管理Index clustered tables(案例)
  9. TCP/IP笔记 应用层(3)——HTTP
  10. poj1185(状压dp)
  11. 关于VS2013的编码的UI测试。
  12. 3 Redis 的常用五大数据类型
  13. k8s(一) kubeadm简单集群初始化
  14. 【SSL】OV、DV和EV证书的区别
  15. SSM 整合 quartz JDBC方式实现job动态增删改查记录
  16. Leaflet API翻译
  17. 导出mysql数据库数据
  18. ElasticSearch优化系列七:优化建议
  19. 查看nginx的版本
  20. HashMap、HashTable的区别

热门文章

  1. Gym - 101196:F Removal Game(区间DP)
  2. Django来敲门~第一部分【4. 创建第一个模块应用】
  3. 洛谷【P1358】扑克牌
  4. error: converting to execution character set: Invalid or incomplete multibyte or wide character
  5. play 1.2.4的action执行前后的加载逻辑
  6. PopupWindow 防微信弹出右 侧窗体(继承PopupWindow )
  7. LoadRunner 参数模拟——快速得到并发用户的进场规则
  8. Angular07 路由的工作流程、路由参数、子路由、利用路由加载模块、模块懒加载???
  9. PCL 不同类型的点云之间进行类型转换
  10. Hive中SELECT TOP N的方法(order by与sort by的区别)