Submission #82339
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | #include <bits/extc++.h> using namespace std; template < int MAX_LOG, class T, class F> vector< int > kthSmallest( const int q, const vector<T> &k, const F &f) { vector< int > ret(q); vector<T> cnt(q); for ( int i = MAX_LOG - 1; i >= 0; --i) { vector<T> seg(1 << (MAX_LOG - i)), memo(q); f( [&]( int val, T c = 1) { seg[val >> i] += c; }, [&]( int idx, T p = 1) { memo[idx] += seg[(ret[idx] >> i)] * p; } ); for ( int j = 0; j < q; ++j) { if (cnt[j] + memo[j] <= k[j]) { ret[j] += (1 << i); cnt[j] += memo[j]; } } } return ret; } int main() { cin.tie(nullptr); ios_base::sync_with_stdio( false ); int n; cin >> n; vector< int > a(n), s, k; vector<pair< int , int > > vs; for ( int i = 0; i < n; ++i) { cin >> a[i]; s.emplace_back(a[i]); vs.emplace_back(a[i], 1); } int q; cin >> q; vector<vector< int > > qs(n + q * 2); for ( int i = 0; i < q; ++i) { int com; cin >> com; if (com == 1) { int x, k; cin >> x >> k; --x; vs.emplace_back(a[x], -1); a[x] = k; vs.emplace_back(a[x], 1); s.emplace_back(a[x]); } else { int x; cin >> x; --x; qs[vs.size()].emplace_back(k.size()); k.emplace_back(x); } } sort(s.begin(), s.end()); s.erase(unique(s.begin(), s.end()), s.end()); for (auto &&[v, _] : vs) v = lower_bound(s.begin(), s.end(), v) - s.begin(); auto res = kthSmallest<22>(k.size(), k, [&](auto &&f, auto &&g) { for ( int i = 0; i <= vs.size(); ++i) { for (auto j : qs[i]) { g(j); } if (i < vs.size()) { f(vs[i].first, vs[i].second); } } }); for (auto e : res) { cout << s[e] << '\n' ; } return (0); } |
ステータス
項目 | データ |
---|---|
問題 | 1909 - Kth Smallest2 |
ユーザー名 | ei1903 |
投稿日時 | 2025-01-15 16:16:47 |
言語 | C++17 |
状態 | Accepted |
得点 | 14 |
ソースコード長 | 2116 Byte |
最大実行時間 | 76 ms |
最大メモリ使用量 | 25880 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | ALL | 14 / 14 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # |
---|---|---|---|---|
input1.txt | AC | 31 ms | 16964 KB |
1
|
input2.txt | AC | 33 ms | 17324 KB |
1
|
input3.txt | AC | 67 ms | 17376 KB |
1
|
input4.txt | AC | 30 ms | 17416 KB |
1
|
input5.txt | AC | 29 ms | 17596 KB |
1
|
input6.txt | AC | 24 ms | 17536 KB |
1
|
input7.txt | AC | 26 ms | 17488 KB |
1
|
input8.txt | AC | 37 ms | 17928 KB |
1
|
input9.txt | AC | 76 ms | 25880 KB |
1
|
input10.txt | AC | 70 ms | 24176 KB |
1
|