1 条题解

  • 1
    @ 2026-4-5 23:58:56
    #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;
    }

    信息

    ID
    28506
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    52
    已通过
    20
    上传者