#P14711. [Bulgarian2015]towers
[Bulgarian2015]towers
题目描述
Pesho 用积木搭了 座塔。它们从左到右排成一行,编号为 到 。
第 座塔的高度是一个正整数 (),表示它由多少块积木构成。所有塔的高度两两不同。
在欣赏自己的作品时,Pesho 想出了如下定义:
若 ,且 ,并且在它们之间不存在某个 (满足 )使得 ,那么称第 座塔覆盖第 座塔。
这个定义让他非常满意,于是他开始统计:对每一座塔,分别有多少座别的塔被它覆盖。
他把这些统计结果记成序列 ,其中 表示第 座塔覆盖的塔数。
就在他完成这项工作、正思考下一步研究方向时,他的弟弟出现了,并且毫不客气地把所有塔都毁掉了。Pesho 当然已经记不清各座塔原来的高度,于是陷入了短暂但深刻的创作型抑郁。不过很快他想到,这场意外其实带来了一个新问题:根据记录下来的 ,尝试恢复各座塔的高度。
经过认真思考后,他发现仅凭这个列表无法唯一恢复原始高度(见样例解释),于是把目标改成了更弱的版本:构造一组高度,使得第 座塔恰好覆盖 座其他塔。
同时,他仍要求所有塔的高度两两不同,并且都是 到 之间的正整数。
请编写程序 towers 帮助 Pesho 完成这个任务。
输入格式
第一行输入一个整数 ,表示塔的数量。
接下来 行,每行一个非负整数 ,表示第 座塔应覆盖的塔数。
输出格式
输出 个正整数 ,表示你构造出的各塔高度,要求第 座塔恰好覆盖 座塔。
每个数单独占一行。
如果有多组解,输出任意一组即可。
说明
请不要忘记:输入中的 来自 Pesho 曾经真实搭出的某组塔,因此至少存在一组解。
样例
输入
6
0
1
0
0
0
2
输出
5
6
4
2
1
3
样例解释
第 2 座塔覆盖第 1 座塔;第 3、4、5 座塔不覆盖任何塔;第 6 座塔覆盖第 4 和第 5 座塔。
另一组同样满足条件的解为:
4
6
5
2
1
3
数据范围
- 10% 的测试点:
- 30% 的测试点:
- 60% 的测试点:
- 100% 的测试点:
- ,且所有 两两不同
评分方式
每个测试点单独计分。