結果
問題 | No.5001 排他的論理和でランニング |
ユーザー |
👑 ![]() |
提出日時 | 2020-07-10 17:27:56 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,457 ms / 1,500 ms |
コード長 | 850 bytes |
コンパイル時間 | 246 ms |
実行使用メモリ | 111,620 KB |
スコア | 52,428,743 |
最終ジャッジ日時 | 2020-07-10 17:29:14 |
ジャッジサーバーID (参考情報) |
judge7 / judge9 |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 50 |
ソースコード
from random import sample,randint,randomfrom time import timefrom math import expimport sys#-------------------------------------------------TIME_LIMIT=1.060ALPHA=0.025ep=10**(-10)#-------------------------------------------------def Probability(Delta,Time):if Delta>0:return 1else:return exp(Delta/(ALPHA*Time+ep))T=time()N,M=map(int,input().split())A=list(map(int,input().split()))if N==M:print(" ".join(map(str,A)))sys.exit()P=set(sample(range(N),M))X=[]Y=[]R=0for i in range(N):if i in P:X.append(A[i])R^=A[i]else:Y.append(A[i])t=time()-Twhile t<TIME_LIMIT:x=randint(0,M-1)y=randint(0,N-M-1)S=R^X[x]^Y[y]if random()<=Probability(S-R,t):R=SX[x],Y[y]=Y[y],X[x]t=time()-Tprint(" ".join(map(str,X)))