配点 : 600 点
問題文
0,1,2,…,N−1 を並び替えた数列 A=[a0,a1,a2,…,aN−1] が与えられます。
k=0,1,2,…,N−1 のそれぞれについて、bi=ai+kmodN で定義される数列 B=[b0,b1,b2,…,bN−1] の転倒数を求めてください。
転倒数とは
数列 A=[a0,a1,a2,…,aN−1] の転倒数とは、i<j かつ ai>aj を満たす添字の組 (i,j) の個数のことです。
制約
- 入力は全て整数
- 2≤N≤3×105
- a0,a1,a2,…,aN−1 は 0,1,2,…,N−1 の並び替えである
入力
入力は以下の形式で標準入力から与えられる。
N
a0 a1 a2 ⋯ aN−1
出力
N 行出力せよ。
i+1 行目には、k=i としたときの答えを出力せよ。
4
0 1 2 3
0
3
4
3
A=[0,1,2,3] です。
k=0 のとき、B=[0,1,2,3] の転倒数は 0 です。
k=1 のとき、B=[1,2,3,0] の転倒数は 3 です。
k=2 のとき、B=[2,3,0,1] の転倒数は 4 です。
k=3 のとき、B=[3,0,1,2] の転倒数は 3 です。
10
0 3 1 5 4 2 9 6 8 7
9
18
21
28
27
28
33
24
21
14