NC51117. 普通平衡树
描述
输入描述
第一行为n,表示操作的个数,下面n行每行有两个数opt和x,opt表示操作的序号
输出描述
对于操作3,4,5,6每行输出一个数,表示对应答案
示例1
输入:
10 1 106465 4 1 1 317721 1 460929 1 644985 1 84185 1 89851 6 81968 1 492737 5 493598
输出:
106465 84185 492737
C++ 解法, 执行用时: 72ms, 内存消耗: 976K, 提交时间: 2022-02-12 16:21:50
#include<bits/stdc++.h> using namespace std; vector<int>s; int main() { int n; scanf("%d",&n); while(n--) { int op,x; scanf("%d%d",&op,&x); if(op==1) s.insert(lower_bound(s.begin(),s.end(),x),x); if(op==2) s.erase(lower_bound(s.begin(),s.end(),x)); if(op==3) printf("%d\n",(lower_bound(s.begin(),s.end(),x))-s.begin()+1); if(op==4) printf("%d\n",s[x-1]); if(op==5) printf("%d\n",*--(lower_bound(s.begin(),s.end(),x))); if(op==6) printf("%d\n",*(upper_bound(s.begin(),s.end(),x))); } }