結果
問題 | No.2195 AND Set |
ユーザー | FromBooska |
提出日時 | 2023-08-31 13:50:14 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 741 ms / 2,000 ms |
コード長 | 1,022 bytes |
コンパイル時間 | 209 ms |
コンパイル使用メモリ | 82,192 KB |
実行使用メモリ | 87,628 KB |
最終ジャッジ日時 | 2024-06-11 01:24:04 |
合計ジャッジ時間 | 10,690 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 37 ms
51,968 KB |
testcase_01 | AC | 38 ms
52,608 KB |
testcase_02 | AC | 605 ms
79,968 KB |
testcase_03 | AC | 688 ms
83,768 KB |
testcase_04 | AC | 609 ms
80,448 KB |
testcase_05 | AC | 727 ms
83,516 KB |
testcase_06 | AC | 741 ms
81,408 KB |
testcase_07 | AC | 689 ms
79,452 KB |
testcase_08 | AC | 730 ms
83,568 KB |
testcase_09 | AC | 624 ms
79,768 KB |
testcase_10 | AC | 727 ms
86,892 KB |
testcase_11 | AC | 730 ms
86,896 KB |
testcase_12 | AC | 733 ms
87,276 KB |
testcase_13 | AC | 737 ms
87,628 KB |
testcase_14 | AC | 728 ms
87,024 KB |
ソースコード
# セグメントツリーでできたが前回の方法でもやってみる # 30桁しかないのでそれぞれの桁に1が何回出たかカウントすればいい Q = int(input()) one_count = [0]*30 S = set() count = 0 for q in range(Q): query = list(map(int, input().split())) if query[0] == 1: x = query[1] if x not in S: S.add(x) count += 1 for i in range(30): if x>>i&1 == 1: one_count[i] += 1 elif query[0] == 2: x = query[1] if x in S: S.discard(x) count -= 1 for i in range(30): if x>>i&1 == 1: one_count[i] -= 1 elif query[0] == 3: if count > 0: ans = 0 for d in range(30): if one_count[d] == count: ans += pow(2, d) print(ans) else: print(-1) #print('q', q, 'count', count) #print('one_count', one_count)