1 条题解

  • 2
    @ 2026-4-5 23:58:56

    过于基础的模版线段树

    #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
    上传者