1 条题解
-
2
过于基础的模版线段树
#include <bits/stdc++.h> using namespace std; #define LL long long namespace Online { constexpr LL N = 2e5 + 5; LL tree[N << 2]; inline void update(int node, int l, int r, int x) { if (l == r) { ++tree[node]; return; } int mid = (l + r) >> 1; if (x <= mid) update(node << 1, l, mid, x); else update(node << 1 | 1, mid + 1, r, x); tree[node] = tree[node << 1] + tree[node << 1 | 1]; } inline int query(int node, int l, int r, int k) { if (l == r) return l; int mid = (l + r) >> 1; if (tree[node << 1] >= k) return query(node << 1, l, mid, k); else return query(node << 1 | 1, mid + 1, r, k - tree[node << 1]); } inline void NaCl(void) { int n; cin >> n; for (; n--;) { int op, val; cin >> op >> val; if (op == 1) { update(1, 1, N, val); } else { if (tree[1] < val) cout << "-1" << "\n"; else cout << query(1, 1, N, val) << "\n"; } } } } auto main(void) -> signed { cin.tie(nullptr)->sync_with_stdio(false); Online::NaCl(); }
信息
- ID
- 28506
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 52
- 已通过
- 20
- 上传者