結果

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

ソースコード

diff #

T=int(input())
import heapq
import heapq 
from heapq import heappop,heappush,heapify
from sys import stdin, setrecursionlimit
input = stdin.readline
readline = stdin.readline

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