結果
問題 | No.2308 [Cherry 5th Tune B] もしかして、真? |
ユーザー |
![]() |
提出日時 | 2023-05-21 12:48:02 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,282 ms / 2,000 ms |
コード長 | 1,178 bytes |
コンパイル時間 | 477 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 132,664 KB |
最終ジャッジ日時 | 2024-07-02 17:32:24 |
合計ジャッジ時間 | 43,498 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 39 |
ソースコード
class Bit:def __init__(self, n):self.size = nself.tree = [0] * (n + 1)def sum(self, i):s = 0while i > 0:s += self.tree[i]i -= i & -ireturn sdef add(self, i, x):while i <= self.size:self.tree[i] += xi += i & -idef search(x):lb = 0ub = Nwhile ub - lb > 1:mid = (lb + ub) // 2if bit.sum(mid) <= x - 1:lb = midelse:ub = midreturn lb + 1T = int(input())for t in range(T):N = int(input())X = [True if x == "True" else False for x in input().split()]Y = input().split()S = list(map(int, input().split()))bit = Bit(N + 1)B = [1] * (N + 1)for i in range(1, N + 1):bit.add(i, 1)for s in S:r = search(s+1) - 1l = search(s) - 1if Y[l] == "and":X[r] &= X[l]elif Y[l] == "or":X[r] |= X[l]elif Y[l] == "xor":X[r] ^= X[l]else:if X[l] == False:X[r] = Truebit.add(l + 1, -1)B[l + 1] -= 1print(X[r])