#P14620. [IATI2022 练习赛]Disorder

    ID: 13836 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 6 上传者: 标签>CF2100分治树状数组数据结构前缀和

[IATI2022 练习赛]Disorder

题目描述

有一叠牌,共 N 张。每张牌上写有一个 1N 之间的整数,并且这些整数两两不同。

现在这些牌被洗乱后按从上到下的顺序摆放。定义这叠牌的无序度为:

  • 满足“较大的数在较小的数上方”的牌对数量。

换句话说,若存在两个位置 i < j,且第 i 张牌上的数字大于第 j 张牌上的数字,那么这对牌会对无序度贡献 1

这实际上就是当前牌序列的逆序对数量

接下来,Rado 会依次从牌堆中抽走若干张牌。每次抽牌后,他都想知道:

  • 当前剩余牌堆的无序度是多少?

请你回答所有这些问题。

输入格式

第一行一个正整数 N,表示牌的数量。

第二行 N 个两两不同的正整数,均在 1N 之间,表示从上到下每张牌上的数字。

第三行 N-2 个两两不同的正整数,均在 1N 之间,表示 Rado 依次抽走的牌面数字。

保证第三行中给出的每个数字都出现在第二行中,且不会重复。

输出格式

输出 N-1 个整数,用空格分隔。

其中:

  • 1 个数表示最初整叠牌的无序度;
  • 2 个数表示抽走第一张指定牌后的无序度;
  • 3 个数表示抽走前两张指定牌后的无序度;
  • 以此类推;
  • 最后一个数表示抽走前 N-2 张指定牌后的无序度。

样例 #1

输入 #1

6
6 1 2 5 3 4
3 5 4 6

输出 #1

7 5 3 2 0

样例说明

初始序列为:

6 1 2 5 3 4

其逆序对共有 7 个,所以第一个输出为 7

之后依次删除牌面值为 3546 的牌,每次删除后重新统计剩余序列中的逆序对数,对应得到:

5, 3, 2, 0

因此最终输出为:

7 5 3 2 0

数据范围

3 <= N <= 100000

子任务信息:

  • 10% 的数据满足 N <= 100
  • 30% 的数据满足 N <= 5000
  • 45% 的数据满足 N <= 15000

说明

每个测试点单独评测。