結果
問題 |
No.1245 ANDORゲーム(calc)
|
ユーザー |
|
提出日時 | 2020-10-02 23:40:35 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 288 ms / 2,000 ms |
コード長 | 698 bytes |
コンパイル時間 | 255 ms |
コンパイル使用メモリ | 82,220 KB |
実行使用メモリ | 98,312 KB |
最終ジャッジ日時 | 2024-07-18 00:19:26 |
合計ジャッジ時間 | 7,245 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 |
ソースコード
N, Q = map(int, input().split()) A = list(map(int, input().split())) S = input() lis = [[0]*31 for _ in range(2)] q = 1 for p in range(31): score = 0 r = q for i in range(N): u = A[i]&(1<<p) if S[i]=='0': s = r&u else: s = r|u score += abs(s-r) r = s lis[1][p] = score score = 0 r = 0 for i in range(N): u = A[i]&(1<<p) if S[i]=='0': s = r&u else: s = r|u score += abs(s-r) r = s lis[0][p] = score q <<= 1 ans = [0]*Q T = list(map(int, input().split())) for i in range(Q): t = T[i] for p in range(31): if t&(1<<p): ans[i] += lis[1][p] else: ans[i] += lis[0][p] print(*ans, sep='\n')