結果

問題 No.2771 Personal Space
ユーザー timi
提出日時 2024-06-03 19:07:11
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 889 ms / 2,000 ms
コード長 994 bytes
コンパイル時間 324 ms
コンパイル使用メモリ 81,792 KB
実行使用メモリ 129,764 KB
最終ジャッジ日時 2024-12-23 10:40:44
合計ジャッジ時間 19,839 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 24
権限があれば一括ダウンロードができます

ソースコード

diff #

T=int(input())
import heapq
m=-10**10
for i in range(T):
  N,M=map(int, input().split())
  A=[];ans=[-1]*N
  ans[M-1]=1
  if M==1:
    l,r=2,N 
    d=r-l+1
    heapq.heappush(A,(d*m+l,l,r,d))
  elif M==N:
    l,r=1,N-1 
    d=r-l+1
    heapq.heappush(A,(d*m+l,l,r,d))
  else:
    l,r=1,M-1
    d=M-1
    heapq.heappush(A,(d*m+l,l,r,d))
    l,r=M+1,N 
    d=N-M
    heapq.heappush(A,(d*m+l,l,r,d))
  for i in range(N-1):
    d=heapq.heappop(A)
    c,l,r,_=d
    if l!=1 and r!=N:      
      d=(l+r)//2 
      ans[d-1]=i+2
      ll,rr=l,d-1
      if ll<=rr:
        dd=(rr-ll)//2+1
        heapq.heappush(A,(dd*m+ll,ll,rr,dd))
      ll,rr=d+1,r
      if ll<=rr:
        dd=(rr-ll)//2+1
        heapq.heappush(A,(dd*m+ll,ll,rr,dd))
    elif l==1:
      ans[l-1]=i+2
      ll,rr=2,r
      dd=(rr-ll)//2+1
      heapq.heappush(A,(dd*m+ll,ll,rr,dd))
    else:
      ans[r-1]=i+2
      ll,rr=l,r-1
      dd=(rr-ll)//2+1
      heapq.heappush(A,(dd*m+ll,ll,rr,dd))
  print(*ans)
      
      
    
    
0