結果
| 問題 |
No.1896 Arrays and XOR Procedure 2
|
| コンテスト | |
| ユーザー |
👑 Kazun
|
| 提出日時 | 2022-04-08 22:18:08 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 88 ms / 2,000 ms |
| コード長 | 996 bytes |
| コンパイル時間 | 184 ms |
| コンパイル使用メモリ | 82,408 KB |
| 実行使用メモリ | 77,440 KB |
| 最終ジャッジ日時 | 2024-11-28 12:59:07 |
| 合計ジャッジ時間 | 6,102 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 |
ソースコード
def max_msb(C):
k=-1; I=-1
for i,c in enumerate(C[1:],1):
if c.bit_length()>k:
k=c.bit_length()
I=i
return k,I
def check(A,B,Ans):
for T,P,Q in Ans:
if T==1:
A[P]=A[P]^B[Q]
else:
B[Q]=A[P]^B[Q]
return max(A[1:])<min(B[1:])
#==================================================
N=int(input())
A=[-1]+list(map(int,input().split()))
B=[-1]+list(map(int,input().split()))
AA=A.copy(); BB=B.copy()
s,i=max_msb(A)
t,j=max_msb(B)
Ans=[]
if s<t:
Ans.append((1,i,j))
A[i]=A[i]^B[j]
s=t
#==================================================
#Phase 1
for k in range(1,N+1):
if B[k].bit_length()<s:
Ans.append((2,i,k))
#==================================================
#Phase 2
for k in range(1,N+1):
if A[k].bit_length()==s:
Ans.append((1,k,1))
#==================================================
print(len(Ans))
for T,A,B in Ans:
print(T,A,B)
assert check(AA,BB,Ans)
Kazun