154. 序列中位数

内存限制:256 MB 时间限制:1.000 S

题目描述

牛牛有一个长度为 n 的整数序列 a,以及一个长度为 n - 1 的整数序列 b,其中 b 中的元素各不相同。牛牛会首先计算序列 a 的中位数,然后按照序列 b 的顺序,依次删除原序列 a 中对应位置的元素,即删除 a[b[i]],其中 0 <= i < n - 1。每次删除后,牛牛会重新计算序列 a 中剩余元素的中位数。


  • 若剩余元素数量为奇数,则中位数为排序后中间的那个数。
  • 若剩余元素数量为偶数,则中位数为排序后中间两个数的平均值。

牛牛将每次计算得到的中位数记录下来,但担心出现错误。请你帮助他验证结果是否正确。

输入

第一行输入一个整数 t(1 <= t <= 10),表示数据组的数量。对于每组数据,输入三行:


  • 第一行为一个整数 n(1 <= n <= 10000),表示序列的长度。
  • 第二行为 n 个整数,表示序列 a 的元素(1 <= a[i] <= 10^9)。
  • 第三行为 n - 1 个整数,表示序列 b 的元素(1 <= b[i] < n)。

输出

对于每组数据,输出一行,包含 n 个数,表示每次删除后的中位数结果。


  • 如果中位数是浮点数,则保留一位小数。
  • 如果中位数是整数,则直接输出整数。

样例输入 复制

2
3
1 5 9
1 2
4
2 6 8 12
2 3 1

样例输出 复制

5 5 1
7 6 4 2

提示

第一组数据

初始数据:


n = 3

a = [1, 5, 9]

b = [1, 2]

初始记录中位数 5


第一次删除:

按 b[0] = 1 删除原序列 a[1] (即删除 5),序列变为 [1, 9] 排序后的序列是 [1, 9]。

中位数为 (1 + 9) / 2 = 5

记录中位数:5


第二次删除:

按 b[1] = 2 删除原序列 a[2] (即删除 9),序列变为 [1] 排序后的序列是 [1]。

中位数是 1(因为只有一个元素)


记录中位数:1 


输出结果为 5 5 1