atcoder#ABC190F. [ABC190F] Shift and Inversions

[ABC190F] Shift and Inversions

配点 : 600600

問題文

0,1,2,,N10, 1, 2, \dots, N - 1 を並び替えた数列 A=[a0,a1,a2,,aN1]A = [a_0, a_1, a_2, \dots, a_{N-1}] が与えられます。 k=0,1,2,,N1k = 0, 1, 2, \dots, N - 1 のそれぞれについて、bi=ai+kmodNb_i = a_{i+k \bmod N} で定義される数列 B=[b0,b1,b2,,bN1]B = [b_0, b_1, b_2, \dots, b_{N-1}] の転倒数を求めてください。

転倒数とは

数列 A=[a0,a1,a2,,aN1]A = [a_0, a_1, a_2, \dots, a_{N-1}] の転倒数とは、i<ji < j かつ ai>aja_i > a_j を満たす添字の組 (i,j)(i, j) の個数のことです。

制約

  • 入力は全て整数
  • 2N3×1052 \leq N \leq 3 \times 10^5
  • a0,a1,a2,,aN1a_0, a_1, a_2, \dots, a_{N-1}0,1,2,,N10, 1, 2, \dots, N - 1 の並び替えである

入力

入力は以下の形式で標準入力から与えられる。

NN

a0a_0 a1a_1 a2a_2 \cdots aN1a_{N-1}

出力

NN 行出力せよ。 i+1i + 1 行目には、k=ik = i としたときの答えを出力せよ。

4
0 1 2 3
0
3
4
3

A=[0,1,2,3]A = [0, 1, 2, 3] です。

k=0k = 0 のとき、B=[0,1,2,3]B = [0, 1, 2, 3] の転倒数は 00 です。 k=1k = 1 のとき、B=[1,2,3,0]B = [1, 2, 3, 0] の転倒数は 33 です。 k=2k = 2 のとき、B=[2,3,0,1]B = [2, 3, 0, 1] の転倒数は 44 です。 k=3k = 3 のとき、B=[3,0,1,2]B = [3, 0, 1, 2] の転倒数は 33 です。

10
0 3 1 5 4 2 9 6 8 7
9
18
21
28
27
28
33
24
21
14