#CSP1201. 楼房又重建 (rebuild)

    ID: 4556 Type: Default File IO: rebuild 1000ms 256MiB Tried: 11 Accepted: 0 Difficulty: 10 Uploaded By: Tags>CSP-S复赛模拟国庆集训

楼房又重建 (rebuild)

题目描述

小 Y 生活的 Z 市位于一个狭长的盆地,因此形成了独有的奇观——所有的楼房是排成一列建造的!

具体的,Z 市一共有 nn 个建筑从东到西依次排列,第 ii 个建筑的高度为 aia_i 米。Z 市的设计师们为了体现不同建筑的区别,保证了这些高度 a1,a2,,ana_1,a_2,\cdots,a_n 构成了一个 1,2,,n1,2,\dots,n 的排列。

Z 市的人们相信一栋建筑是“楼王”,当且仅当所有它东侧的建筑都比它矮。换言之,第 ii 个建筑是“楼王”当且仅当 ai>max(a1,a2,,ai1)a_i>\max(a_1,a_2,\dots,a_{i-1}) 。Z 市的人们都很喜欢楼王,所以定义 Z 市的美观度为“楼王”的个数。

现在 Z 市的市长小 Z 决定将这些楼房重建,但推倒的代价太大,于是小 Z 选择了小 Y 提供的新技术 “乾坤大挪移”。具体的,一次乾坤大挪移基于一个预先设置的 1,2,,n1,2,\cdots,n 的排列 b1,b2,,bnb_1,b_2,\dots,b_n,执行完乾坤大挪移后,原本在从东到西的第 bib_i 个建筑会被移到从东到西的第 ii 个位置。

执行乾坤大挪移同样有一定的代价。小 Y 注意到,对于排列 bb 中的每一个数 bib_i ,如果存在某个j<ij<i 满足 bj>bib_j>b_i,那么在 bib_i 处就会产生 11 的代价(每个位置 ii 最多只会产生 11 的代价)。现在小 Y 请你来给他出谋划策,请你为他寻找一个 1,2,,n1,2,\cdots,n 的排列 b1,b2,,bnb_1,b_2,\dots,b_n,使得按此执行完“乾坤大挪移”后,Z 市的美观度减去乾坤大挪移的代价最大。

输入格式

rebuild.in 文件读入数据。

第一行一个整数 TT,代表数据组数。对于每组数据:

第一行一个整数 nn

第二行 nn 个整数 a1,a2,,ana_1,a_2,\dots,a_n,代表 Z 市的建筑初始的高度,保证 a1,a2,,ana_1,a_2,\cdots,a_n1,2,,n1,2,\dots,n 的一个排列。

输出格式

输出到 rebuild.out 文件。

对于每组测试数据,输出一行 nn 个整数 b1,b2,,bnb_1,b_2,\cdots,b_n 代表你选择的排列。如果有多个可能的答案,你只需要输出其中一个。

样例

3
3
1 2 3
4
2 4 3 1
5
1 5 2 4 3
1 2 3 
1 3 4 2 
1 3 5 4 2 

对于样例中的第一个数据,乾坤大挪移后从东到西的高度为 1,2,31,2,3,楼王的个数为 33,乾坤大挪移的代价为 00

对于样例中的第二个数据,乾坤大挪移后从东到西的高度为 2,3,1,42,3,1,4,楼王的个数为 33,乾坤大挪移的代价为 11

对于样例中的第三个数据,乾坤大挪移后从东到西的高度为 1,2,3,4,51,2,3,4,5,楼王的个数为 55,乾坤大挪移的代价为 22

数据范围

对于每个测试点,1T1051 \leq T\leq 10^51n2×1051 \leq n\leq 2\times 10^5TT 组数据的 nn 之和不超过 2×1052\times 10^5

子任务 分数 附加约束条件
11 1010 ai=ia_i=i
22 1515 n10n\le 10
33 2020 只存在两个位置满足 aiia_i\not =i
44 2525 n2×103n\le 2\times 10^3
55 3030 无附加限制