记录编号 |
142672 |
评测结果 |
AAAAAA |
题目名称 |
[POJ 1442] 黑盒子 |
最终得分 |
100 |
用户昵称 |
ztx |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.028 s |
提交时间 |
2014-12-10 09:15:03 |
内存使用 |
1.83 MiB |
显示代码纯文本
/****************************************\
* Author : hzoi_ztx
* Title :
* ALG :
* CMT :
* Data :
\****************************************/
#include <cstdio>
#include <queue>
#include <cctype>
#include <algorithm>
#define maxn 200001
#define inf 2100000000
using namespace std ;
priority_queue<int>q_l,q_r;
//默认大根堆
int n , m , pos ;
int left=0 , tot=0 ;
int data[maxn] = {0} ;
int gett[maxn] = {0} ;
inline int qread(){
int ret = 0 ; char ch ; bool flag = false ;
while (ch = getchar() , !isdigit(ch) && ch != '-') ;
if (ch == '-') { flag = true ; ch = getchar() ; }
while (ret = ret*10+ch-'0', ch = getchar() , isdigit(ch)) ;
if (flag) return (-ret) ;
else return ret ;
}
int oper(int par) {
while (tot < pos) {
tot ++ ;
if (data[tot] > (q_l.top())) q_r.push(-data[tot]) ;
else {
left ++ ; q_l.push(data[tot]) ;
}
}
while (left>par) {
left -- ; q_r.push((-q_l.top())) ; q_l.pop() ;
}
while (left<par) {
left ++ ; q_l.push((-q_r.top())) ; q_r.pop() ;
}
return (-q_r.top()) ;
}
int main() {
#define READ
#ifdef READ
freopen("blackbox.in" ,"r",stdin ) ;
freopen("blackbox.out","w",stdout) ;
#endif
m = qread() ; n = qread() ; bool flag = false ;
for (int i = 1 ; i <= m ; i ++ ) data[i]=qread() ;
for (int i = 1 ; i <= n ; i ++ ) {
gett[i]=qread() ; if (gett[i]<gett[i-1]) flag = true ;
}
if (flag) sort(gett+1,gett+n+1) ;
q_l.push(-inf) ; q_r.push(-inf) ;
for (int i = 1 ; i <= n ; i ++ ) {
pos = gett[i] ; printf("%d\n", oper(i-1) ) ;
}
#ifdef READ
fclose(stdin) ; fclose(stdout) ;
#else
getchar() ; getchar() ;
#endif
return 0 ;
}