记录编号 156069 评测结果 AAAAAAAAAA
题目名称 [Tyvj 1728]普通平衡树 最终得分 100
用户昵称 Gravatarztx 是否通过 通过
代码语言 C++ 运行时间 1.098 s
提交时间 2015-04-01 21:11:46 内存使用 0.31 MiB
显示代码纯文本
/****************************************\
* Author : ztx
* Title  : [bzoj] 3224: Tyvj 1728 普通平衡树
* ALG    : 常用思想 二分
* CMT    :
* Time   :
\****************************************/

#include <cstdio>

int CH , NEG ;
inline void read(int& ret) {
    ret = NEG = 0 ; while (CH=getchar() , CH<'!') ;
    if (CH == '-') NEG = true , CH = getchar() ;
    while (ret = ret*10+CH-'0' , CH=getchar() , CH>'!') ;
    if (NEG) ret = -ret ;
}

#include <deque>

using namespace std ;

deque<int> q ;

int L , R , M ;
inline int Bsearch(int x) {
	L = 0 , R = q.size()-1 ;
	while (L <= R) {
		M = L+(R-L)/2 ;
		if (q[M] >= x) R = M-1 ;
		else L = M+1 ;
	}
	return L ;
}

int n , i , k , cmd , x ;
int main() {
	#define READ
	#ifdef  READ
		freopen("phs.in" ,"r",stdin ) ;
		freopen("phs.out","w",stdout) ;
	#endif
	scanf("%d", &n) ;
	for (i = 0 ; i < n ; i ++ ) {
		read(cmd) , read(x) ;
		if (cmd == 1) { k = Bsearch(x) ; q.insert(q.begin()+k , x) ; }
		if (cmd == 2) { k = Bsearch(x) ; q.erase(q.begin()+k) ; }
		if (cmd == 3) { k = Bsearch(x) ; printf("%d\n", k+1) ; }
		if (cmd == 4) { printf("%d\n", q[x-1]) ; }
		if (cmd == 5) { k = Bsearch(x-1) ; if (q[k]!=x-1) k -- ; printf("%d\n", q[k]) ; }
		if (cmd == 6) { k = Bsearch(x+1) ; printf("%d\n", q[k]) ; }
	}
	#ifdef  READ
		fclose(stdin) ; fclose(stdout) ;
	#else
		getchar() ; getchar() ;
	#endif
	return 0 ;
}