3589 - 减数操作

题目描述

N 个整数,第 i 个整数的值 A_i 满足 0 \le A_i \le N

现有 N 次减数操作,第 j 次(j \in [0,N-1])减数操作要求将这组数中所有满足 A_i \gt j 的数,减少到 j ,并统计出此时这组数中逆序对的总数。

逆序对指的是,如果有两个整数 A_iA_j,满足 i \lt jA_i \gt A_j,则这两个整数构成逆序对。

请注意:这里的每次操作都是在原始 N 个数的基础上进行减数操作。即:在第 j 次操作之后,第 j + 1 次操作之前,数组中的每个数的值会恢复为读入的值。

输入

1 行输入整数 N

2 行输入 N 个整数 A_1,\dots,A_n

输出

输出 N 行,分别代表对于 j=0,1,\dots,N-1 的情况下,进行减数操作后逆序对的数量。

样例

输入

5
5 3 2 4 0

输出

0
4
4
6
7

输入

8
8 6 2 2 0 0 5 3

输出

0
8
8
12
15
15
17
18
说明

样例 1 解释

共有 5 个数,5 次减数操作。

j 次减数操作需要将所有大于 j 的数,变为 j

0 次操作后,数组为 0,0,0,0,0,有 0 个逆序对。

1 次操作后,数组为 1,1,1,1,0,有 4 个逆序对。

2 次操作后,数组为 2,2,2,2,0,有 4 个逆序对。

3 次操作后,数组为 3,3,2,3,0,有 6 个逆序对。

4 次操作后,数组为 4,3,2,4,0,有 7 个逆序对。

数据范围

对于 20\% 的数据,满足 1 \le N \le 100

对于 50\% 的数据,满足 1 \le N \le 5000

对于 100\% 的数据,满足 1 \le N \le 10^50 \le A_i \le N

标签
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 58
通过人数 19
金币数量 0 枚
难度 基础


上一题 下一题