結果

問題 No.5001 排他的論理和でランニング
ユーザー 👑 Kazun
提出日時 2020-07-10 17:37:37
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 1,449 ms / 1,500 ms
コード長 943 bytes
コンパイル時間 223 ms
実行使用メモリ 116,696 KB
スコア 52,428,738
最終ジャッジ日時 2020-07-10 17:38:54
ジャッジサーバーID
(参考情報)
judge8 / judge10
純コード判定しない問題か言語
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 50
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

from random import sample,randint,random
from time import time
from math import exp
from copy import copy
import sys
#-------------------------------------------------
TIME_LIMIT=1.060
ALPHA=0.025
ep=10**(-10)
#-------------------------------------------------
def Probability(Delta,Time):
if Delta>0:
return 1
else:
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=0
for i in range(N):
if i in P:
X.append(A[i])
R^=A[i]
else:
Y.append(A[i])
b=R
B=copy(R)
t=time()-T
while 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=S
X[x],Y[y]=Y[y],X[x]
if R>b:
b=R
B=copy(X)
t=time()-T
print(" ".join(map(str,B)))
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0