RT,题目如下:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
给定一个长度为 NNN 的数组 B1,B2,…,BNB_1,B_2,\dots,B_NB1 ,B2 ,…,BN ,其中每个 BiB_iBi 是一个正整数。
现在需要你构造一个长度为 NNN 的数组 A1,A2,…,ANA_1,A_2,\dots,A_NA1 ,A2 ,…,AN ,满足:
* 1≤Ai≤N1 \le A_i \le N1≤Ai ≤N;
* 对于每个 iii,按照如下规则计算出的值恰好等于给定的 BiB_iBi 。
规则:如何由 AAA 得到 BIB_IBI
对于每个位置 iii(1≤i≤N1 \le i \le N1≤i≤N),考虑所有满足以下两个条件的区间 [l,r][l,r][l,r]:
1. 1≤l≤i≤r≤N1 \le l \le i \le r \le N1≤l≤i≤r≤N,即区间必须包含位置 iii;
2. AiA_iAi 是区间 Al,Al+1,…,ArA_l,A_{l+1},\dots,A_rAl ,Al+1 ,…,Ar 中的最小值之一。
也就是说,区间内不能存在比 AiA_iAi 更小的数。如果区间的最小值在多个位置同时出现(即等于 AiA_iAi 的多个位置),那么对于每个这样的位置,都会分别计入它自己的 BBB 值。具体来说,对于位置 iii,只要 AiA_iAi 等于该区间的最小值,这个区间就计入 BiB_iBi 。
令 BiB_iBi 等于满足上述条件的区间 [l,r][l,r][l,r] 的总数量。
题目保证至少存在一个合法的数组 AAA,你只需要输出任意一个即可。
输入输出格式
* 输入文件 subarray.in:第一行一个整数 NNN;第二行 NNN 个整数 B1,B2,…,BNB_1,B_2,\dots,B_NB1 ,B2 ,…,BN 。
* 输出文件 subarray.out:一行 NNN 个整数 A1,A2,…,ANA_1,A_2,\dots,A_NA1 ,A2 ,…,AN ,满足 1≤Ai≤N1 \le A_i \le N1≤Ai ≤N,并且按上述规则计算得到的 BBB 恰好等于输入。
数据范围
* 1≤N≤5×1061 \le N \le 5 \times 10^61≤N≤5×106
* 1≤Bi≤N21 \le B_i \le N^21≤Bi ≤N2
* 保证至少存在一个合法数组 AAA。
样例说明
例如输入:
一个合法输出是:
验证:对于 A=[1,3,2]A=[1,3,2]A=[1,3,2],
* i=1i=1i=1,A1=1A_1=1A1 =1 是最小值的区间有 [1,1],[1,2],[1,3][1,1],[1,2],[1,3][1,1],[1,2],[1,3],共 333 个,所以 B1=3B_1=3B1 =3;
* i=2i=2i=2,A2=3A_2=3A2 =3 是最小值的区间只有 [2,2][2,2][2,2],共 111 个,所以 B2=1B_2=1B2 =1;
* i=3i=3i=3,A3=2A_3=2A3 =2 是最小值的区间有 [3,3],[2,3][3,3],[2,3][3,3],[2,3],共 222 个,所以 B3=2B_3=2B3 =2。
与输入完全一致。
核心要求
构造任意一个长度为 NNN 的数组 AAA,元素在 1∼N1 \sim N1∼N 之间,使得它产生的 BBB 数组与输入完全相同。