結果
問題 |
No.3298 K-th Slime
|
ユーザー |
![]() |
提出日時 | 2025-10-05 14:44:25 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
RE
|
実行時間 | - |
コード長 | 968 bytes |
コンパイル時間 | 2,845 ms |
コンパイル使用メモリ | 281,668 KB |
実行使用メモリ | 16,692 KB |
最終ジャッジ日時 | 2025-10-05 14:44:54 |
合計ジャッジ時間 | 6,719 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 11 RE * 14 |
ソースコード
#include<bits/stdc++.h> using namespace std; #define rep(i, n) for(int i = 0; i < (int)(n); i++) int main(){ vector<vector<int>> v(1<<17, vector<int> (17)); auto ins = [&](int a){ rep(i, 17){ if(i == 0)v[a][0]++; else if(a%2 == 0)v[a/=2][i]++; else a /= 2; } }; auto era = [&](int a){ rep(i, 17){ if(i == 0)v[a][0]--; else if(a%2 == 0)v[a/=2][i]--; else a /= 2; } }; auto fin = [&](int a){ int at = 0; for(int i = 16; i >= 1; i--){ if(v[at][i] < a){ a -= v[at][i]; at = at * 2 + 1; } else at *= 2; } return at; }; int N, K, Q, A, t, n, m; cin >> N >> K >> Q; rep(i, N){ cin >> A; ins(A); } rep(i, Q){ cin >> t; switch(t){ case 1: cin >> n; ins(n); break; case 2: cin >> n; m = fin(K); era(m); ins(m+n); break; case 3: cout << fin(K) << endl; } } }