#include <bits/stdc++.h>
#include <bits/extc++.h>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
#define ll long long
inline ll read() {
int x = 0, f = 0; char ch = getchar();
while (!isdigit(ch)) f = ch == '-', ch = getchar();
while (isdigit(ch)) x = (x << 3) + (x << 1) + (ch ^ 48), ch = getchar();
return f ? -x : x;
}
tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update> tr;
int n, op; ll x;
int main() {
n = read();
for (int i = 1; i <= n; ++i) {
op = read(); x = read();
if (op == 1) tr.insert((x << 20) + i);
if (op == 2) tr.erase(tr.lower_bound(x << 20));
if (op == 3) printf("%lld\n", tr.order_of_key(x << 20) + 1);
if (op == 4) printf("%lld\n", (*tr.find_by_order(x - 1)) >> 20);
if (op == 5) printf("%lld\n", (*(--tr.lower_bound(x << 20))) >> 20);
if (op == 6) printf("%lld\n", (*tr.upper_bound((x << 20) + n)) >> 20);
}
}
P3369 【模板】普通平衡树
于 2022-05-13 08:54:42 首次发布