记录编号 142672 评测结果 AAAAAA
题目名称 [POJ 1442] 黑盒子 最终得分 100
用户昵称 Gravatarztx 是否通过 通过
代码语言 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 ;
}