結果
問題 |
No.2195 AND Set
|
ユーザー |
|
提出日時 | 2024-12-11 17:34:27 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,320 bytes |
コンパイル時間 | 903 ms |
コンパイル使用メモリ | 81,184 KB |
最終ジャッジ日時 | 2025-02-26 12:01:11 |
ジャッジサーバーID (参考情報) |
judge2 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 12 WA * 1 |
ソースコード
#include <iostream> #include <cstdint> #include <vector> #include <set> #include <array> #include <climits> using namespace std; int main() { cin.tie(nullptr); ios::sync_with_stdio(false); uint32_t Q, i; cin >> Q; vector<pair<char, uint32_t>> query(Q); for (i = 0; i != Q; ++i) { cin >> query[i].first; if (query[i].first != '3') cin >> query[i].second; } set<uint32_t> S; set<uint32_t>::iterator itr; array<uint32_t, CHAR_BIT * sizeof(query[0].second)> bitwise_counter; uint32_t ans; bitwise_counter.fill(0); for (i = 0; i != Q; ++i) switch (query[i].first) { case '1': itr = S.lower_bound(query[i].second); if (*itr != query[i].second) { S.emplace_hint(itr, query[i].second); for (uint8_t j = 0; j != bitwise_counter.size(); ++j) if ((query[i].second >> j) & 1) ++bitwise_counter[j]; } break; case '2': itr = S.find(query[i].second); if (itr != S.end()) { S.erase(itr); for (uint8_t j = 0; j != bitwise_counter.size(); ++j) if ((query[i].second >> j) & 1) --bitwise_counter[j]; } break; case '3': if (S.empty()) cout << "-1\n"; else { ans = 0; for (uint8_t j = 0; j != bitwise_counter.size(); ++j) if (bitwise_counter[j] == S.size()) ans |= UINT32_C(1) << j; cout << ans << '\n'; } } return 0; }