結果

問題 No.1209 XOR Into You
ユーザー imueri2kimueri2k
提出日時 2024-12-20 20:39:11
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 379 ms / 2,000 ms
コード長 1,150 bytes
コンパイル時間 509 ms
コンパイル使用メモリ 82,164 KB
実行使用メモリ 162,520 KB
最終ジャッジ日時 2024-12-20 20:39:27
合計ジャッジ時間 15,252 ms
ジャッジサーバーID
(参考情報)
judge1 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 49 ms
54,144 KB
testcase_01 AC 50 ms
53,888 KB
testcase_02 AC 53 ms
53,760 KB
testcase_03 AC 48 ms
53,760 KB
testcase_04 AC 110 ms
93,568 KB
testcase_05 AC 107 ms
93,696 KB
testcase_06 AC 154 ms
95,024 KB
testcase_07 AC 339 ms
151,096 KB
testcase_08 AC 311 ms
142,900 KB
testcase_09 AC 302 ms
143,252 KB
testcase_10 AC 257 ms
127,328 KB
testcase_11 AC 328 ms
141,404 KB
testcase_12 AC 282 ms
134,904 KB
testcase_13 AC 313 ms
145,784 KB
testcase_14 AC 274 ms
133,368 KB
testcase_15 AC 318 ms
135,904 KB
testcase_16 AC 294 ms
134,952 KB
testcase_17 AC 280 ms
133,236 KB
testcase_18 AC 376 ms
158,876 KB
testcase_19 AC 283 ms
135,160 KB
testcase_20 AC 379 ms
145,972 KB
testcase_21 AC 249 ms
127,424 KB
testcase_22 AC 302 ms
162,160 KB
testcase_23 AC 301 ms
162,396 KB
testcase_24 AC 293 ms
162,400 KB
testcase_25 AC 338 ms
161,956 KB
testcase_26 AC 333 ms
162,084 KB
testcase_27 AC 344 ms
161,976 KB
testcase_28 AC 338 ms
162,172 KB
testcase_29 AC 334 ms
162,296 KB
testcase_30 AC 349 ms
162,280 KB
testcase_31 AC 238 ms
108,472 KB
testcase_32 AC 232 ms
107,948 KB
testcase_33 AC 242 ms
108,624 KB
testcase_34 AC 240 ms
109,052 KB
testcase_35 AC 251 ms
108,592 KB
testcase_36 AC 234 ms
108,592 KB
testcase_37 AC 197 ms
106,272 KB
testcase_38 AC 302 ms
151,312 KB
testcase_39 AC 278 ms
140,828 KB
testcase_40 AC 294 ms
162,520 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

class fenwick_tree():
    n=1
    data=[0 for i in range(n)]
    def __init__(self,N):
        self.n=N
        self.data=[0 for i in range(N)]
    def add(self,p,x):
        assert 0<=p<self.n,"0<=p<n,p={0},n={1}".format(p,self.n)
        p+=1
        while(p<=self.n):
            self.data[p-1]+=x
            p+=p& -p
    def sum(self,l,r):
        assert (0<=l and l<=r and r<=self.n),"0<=l<=r<=n,l={0},r={1},n={2}".format(l,r,self.n)
        return self.sum0(r)-self.sum0(l)
    def sum0(self,r):
        s=0
        while(r>0):
            s+=self.data[r-1]
            r-=r&-r
        return s


import collections

N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))

if A[0] != B[0] or A[-1] != B[-1]:
    print(-1)
    exit()

X = [A[i] ^ A[i+1] for i in range(N-1)]
Y = [B[i] ^ B[i+1] for i in range(N-1)]

if sorted(X) != sorted(Y):
    print(-1)
    exit()

Z = collections.defaultdict(collections.deque)
for i, y in enumerate(Y):
    Z[y].append(i)

C = []
for x in X:
    C.append(Z[x].popleft())

G = fenwick_tree(N)
ans = 0
for c in C:
    ans += G.sum(c+1, N)
    G.add(c, 1)

print(ans)






0