結果

問題 No.2844 Birthday Party Decoration
ユーザー moon17moon17
提出日時 2024-08-23 22:32:57
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 143 ms / 2,000 ms
コード長 821 bytes
コンパイル時間 317 ms
コンパイル使用メモリ 82,480 KB
実行使用メモリ 77,432 KB
最終ジャッジ日時 2024-08-23 22:32:58
合計ジャッジ時間 1,656 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 39 ms
53,000 KB
testcase_01 AC 141 ms
76,944 KB
testcase_02 AC 138 ms
77,168 KB
testcase_03 AC 143 ms
77,432 KB
testcase_04 AC 141 ms
77,368 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from bisect import*
t=[1]
for _ in range(65):
  t+=t[-1]*2,
for _ in range(int(input())):
  n,x=map(int,input().split())
  *c,=map(int,input().split())
  s=[]
  for i in c:
    if x>>i&1:
      continue
    j=((x>>i)-1<<i)|((1<<(i+1))-1)
    if j<0 or j>>i&1==0:
      j=((x>>i)<<i)|(1<<i)
    s+=(j,i),
  if not s:
    print(0)
    continue
  s.sort()
  ans=t[-1]
  if x<=s[0][0]:
    ans=(s[-1][0]-x)*2
  elif s[-1][0]<=x:
    ans=(x-s[0][0])*2
  else:
    ans=(abs(x-s[-1][0])+abs(x-s[0][0]))*2
  # print(s)
  for p in range(len(s)):
    i,j=s[p]
    k=((x>>j)<<j)|(1<<j)
    insort(s,(k,j))
    # print(s,ans)
    if x<=s[p+1][0]:
      ans=min(ans,(s[-1][0]-x)*2)
    elif s[-1][0]<=x:
      ans=min(ans,(x-s[p+1][0])*2)
    else:
      ans=min(ans,(abs(x-s[-1][0])+abs(x-s[p+1][0]))*2)
  # print(x,c,s)
  print(ans)
0