結果

問題 No.1863 Xor Sum 2...?
ユーザー tamato
提出日時 2022-03-04 22:35:44
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,196 bytes
コンパイル時間 278 ms
コンパイル使用メモリ 82,432 KB
実行使用メモリ 104,064 KB
最終ジャッジ日時 2024-07-18 21:08:07
合計ジャッジ時間 4,112 ms
ジャッジサーバーID
(参考情報)
judge3 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 10 WA * 18
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

mod = 1000000007
eps = 10**-9
def main():
import sys
input = sys.stdin.readline
N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
cs_A = [0] * (N + 1)
cxor_A = [0] * (N + 1)
for i, a in enumerate(A):
cs_A[i + 1] = cs_A[i] + a
cxor_A[i + 1] = cxor_A[i] ^ a
cxor_B = [0] * (N + 1)
for i, b in enumerate(B):
cxor_B[i + 1] = cxor_B[i] ^ b
cs_B = [0] * (N + 1)
for i in range(N):
cs_B[i + 1] = cs_B[i] + cxor_B[i + 1]
ans = 0
for i in range(N):
ok = i
ng = N
mid = (ok + ng) // 2
while ng - ok > 1:
c = cs_A[mid + 1] - cs_A[i]
x = cxor_A[mid + 1] ^ cxor_A[i]
if c == x:
ok = mid
else:
ng = mid
mid = (ok + ng) // 2
if B[i] == 0:
ans += 1
if ok != i:
if cxor_B[i + 1] == 1:
ans += cs_B[ok + 1] - cs_B[i + 1]
else:
ans += (ok - i) - (cs_B[ok + 1] - cs_B[i + 1])
#print(i, ans, ok)
print(ans)
#print(cs_B)
if __name__ == '__main__':
main()
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0