結果
問題 |
No.1355 AND OR GAME
|
ユーザー |
![]() |
提出日時 | 2021-09-02 01:02:49 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 406 ms / 2,000 ms |
コード長 | 1,105 bytes |
コンパイル時間 | 164 ms |
コンパイル使用メモリ | 81,868 KB |
実行使用メモリ | 121,652 KB |
最終ジャッジ日時 | 2024-11-28 23:04:19 |
合計ジャッジ時間 | 20,469 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 95 |
ソースコード
import sys input = sys.stdin.readline N,X,Y=map(int,input().split()) A=list(map(int,input().split())) initY=Y P=[] Y=list(map(int,list(bin(Y)[2:].zfill(64)[::-1]))) for i in range(N-1,-1,-1): #print(i,Y) S=0 T=0 for j in range(64): if (1<<j) & A[i]!=0 and Y[j] == 0: S=1 if (1<<j) & A[i]==0 and Y[j] == 1: T=1 if S==0 and T==0: P.append(3) P+=[1]*(N-len(P)) print(*P[::-1]) exit() elif S==1 and T==1: print(-1) exit() elif S==1: P.append(1) for j in range(64): if Y[j]==0: if (1<<j) & A[i]!=0: True else: Y[j]=-1 else: P.append(2) for j in range(64): if Y[j]==1: if (1<<j) & A[i]==0: True else: Y[j]=-1 P=P[::-1] for i in range(N): if P[i]==1: X&=A[i] elif P[i]==2: X|=A[i] else: X=A[i] if X==initY: print(*P) else: print(-1)