結果

問題 No.2665 Minimize Inversions of Deque
ユーザー dp_ijkdp_ijk
提出日時 2024-06-22 16:45:15
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 319 ms / 2,000 ms
コード長 1,385 bytes
コンパイル時間 182 ms
コンパイル使用メモリ 82,456 KB
実行使用メモリ 111,324 KB
最終ジャッジ日時 2024-06-22 16:45:29
合計ジャッジ時間 11,077 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 40
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

class FenwickTree:
def __init__(self, iterable):
self.tree = tree = [0]
tree.extend(iterable)
self.data = tree[1:]
self.N = N = len(tree) - 1
for i in range(1, N+1):
if i + (i& -i) <= N:
tree[i + (i& -i)] += tree[i]
def add(self, i, x):
assert 0 <= i < self.N
tree = self.tree
self.data[i] += x
i += 1
while i <= self.N:
tree[i] += x
i += i& -i
def sum(self, l, r):
assert 0 <= l <= r <= self.N
tree = self.tree
res = 0
while l < r:
res += tree[r]
r &= r-1
while l > r:
res -= tree[l]
l &= l-1
return res
def __repr__(self):
return repr(self.data)
from collections import deque
T = int(input())
for _ in range(T):
N = int(input())
P = list(map(lambda x: int(x) - 1, input().split()))
fw = FenwickTree([0]*N)
Q = deque()
inv = 0
for i, p in enumerate(P):
xL = fw.sum(0, p)
xR = i-xL
if xL > xR:
Q.append(p)
inv += xR
if xL < xR:
Q.appendleft(p)
inv += xL
if xL == xR:
inv += xL
if not Q:
Q.append(p)
else:
if Q[0] > p:
Q.appendleft(p)
else:
Q.append(p)
fw.add(p, 1)
print(inv)
print(*(x+1 for x in Q))
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0