1 条题解
-
1
#pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") /* @ Apirl.5 @ problem from: */ #include <bits/stdc++.h> using namespace std; typedef long long ll; using s64 = signed long long; using u32 = unsigned int; using u64 = unsigned long long; #define lod long double #ifdef __linux__ #define gc getchar #define pc putchar #endif #define rep(i,n) for(int i = 1;i <= n;++i) #define rep2(i,n) for(int i = n;i >= n;--i) #define debug(x) cout << #x << " : " << x << "\n"; #define debug2(x,y) cout << #x << " : " << x << " " << #y << " : " << y << "\n"; /*---QuickIO---*/ namespace Quick { void Input_Output(void) { cin.tie(nullptr)->sync_with_stdio(false); } } /*---Code---*/ namespace Cplas17 { const int N = 2e5+5; int tree[N << 2]; int n; 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]; } 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]); } void NaCl(void) { cin >> n; while (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"; } } } } /*---Freopen---*/ auto Freopen = [](void) -> void { freopen("file.in", "r", stdin); freopen("file.out", "w", stdout); }; /*---Main---*/ signed main(void) noexcept { Quick::Input_Output; #ifdef __linux__ //Freopen(); #endif setvbuf(stdin, NULL, _IOFBF, 1 << 25); setvbuf(stdout, NULL, _IOFBF, 1 << 25); // cout<<fixed<<setprecision(10); int T_ = 1; //cin >> T_; while (T_--) Cplas17::NaCl(); return 0; }
- 1
信息
- ID
- 28506
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- 递交数
- 52
- 已通过
- 20
- 上传者