結果
問題 |
No.2024 Xer
|
ユーザー |
|
提出日時 | 2025-03-07 09:43:21 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 474 ms / 2,000 ms |
コード長 | 1,911 bytes |
コンパイル時間 | 450 ms |
コンパイル使用メモリ | 82,400 KB |
実行使用メモリ | 259,128 KB |
最終ジャッジ日時 | 2025-03-07 09:43:33 |
合計ジャッジ時間 | 11,088 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 47 |
ソースコード
import sys sys.setrecursionlimit(100000) def divide(a,x): if a==[]: return a if x==-1: return a if ((X>>x)&1)==0: la=[] ra=[] for i in a: if (i>>x)&1: ra.append(i) else: la.append(i) return divide(la,x-1)+divide(ra,x-1) else: zr=[] on=[] for i in a: if (i>>x)&1: on.append(i) else: zr.append(i) on.sort() zr.sort() if abs(len(on)-len(zr))>1: print("No") exit() if len(on)>=len(zr): valid=[] oc=0 zc=0 for i in range(len(a)): if i%2==0: valid.append(on[oc]) oc+=1 else: valid.append(zr[zc]) zc+=1 flg=True for i in range(len(valid)-1): if (valid[i]^X)>=valid[i+1] or valid[i]>=(valid[i+1]^X): flg=False if flg: return valid if len(on)<=len(zr): valid=[] oc=0 zc=0 for i in range(len(a)): if i%2==1: valid.append(on[oc]) oc+=1 else: valid.append(zr[zc]) zc+=1 flg=True for i in range(len(valid)-1): if (valid[i]^X)>=valid[i+1] or valid[i]>=(valid[i+1]^X): flg=False if flg: return valid print("No") exit() N,X=map(int,input().split()) A=list(map(int,input().split())) A=divide(A,50) if len(A)!=N: print("No") exit() for i in range(N-1): if (A[i]^X)>=A[i+1] or A[i]>=(A[i+1]^X): print("No") exit() print("Yes")