結果

問題 No.2665 Minimize Inversions of Deque
ユーザー timitimi
提出日時 2024-03-08 21:28:44
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 323 ms / 2,000 ms
コード長 714 bytes
コンパイル時間 287 ms
コンパイル使用メモリ 82,204 KB
実行使用メモリ 108,032 KB
最終ジャッジ日時 2024-09-29 18:58:16
合計ジャッジ時間 10,592 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 40
権限があれば一括ダウンロードができます

ソースコード

diff #

T=int(input())
class Bit:
  def __init__(self, size):
      self.data = [0] * (size + 1)
      self.size = size
  #i: index(0-index)までの和
  def sum(self, i):
      i+=2
      s = 0
      while i > 0:
          s += self.data[i]
          i -= i & -i
      return s

  def add(self, i, x):
      i += 2
      while i <= self.size:
          self.data[i] += x
          i += i & -i

from collections import deque
d=deque()

for _ in range(T):
  N=int(input())
  A=list(map(int, input().split()))
  d=deque()
  bit=Bit(N+10)
  c=0
  for a in A:
    p=bit.sum(a)
    q=bit.sum(N+5)-bit.sum(a)
    c+=min(p,q)
    if p<q:
      d.appendleft(a)
    else:
      d.append(a)
    bit.add(a,1) 
  print(c)
  print(*d)
0