結果
| 問題 |
No.2844 Birthday Party Decoration
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 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 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 4 |
ソースコード
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)