#P14762. [Bulgarian2025冬季赛]panama
[Bulgarian2025冬季赛]panama
题目描述
唐老鸭一向脾气暴躁,而且众所周知他还不穿裤子。现在他决定占领巴拿马运河,让它“再次伟大”。
巴拿马运河由 N 个等长的连续区段组成,编号为 1 到 N。相邻区段之间由船闸隔开,因此每个区段中的水位都保持恒定;第 i 个区段的水位为高于海平面 h_i 毫米。
这些船闸使得占领运河几乎不可能,但唐老鸭仍然下定决心要这么做。
经过仔细分析后,唐老鸭发现无法从水路进入运河。因此,他决定驾驶私人飞机飞越运河,并跳伞进入某一个区段。之后,他计划逐个打开船闸,直到最后所有区段合并成一个大区段,并正式宣布运河已被占领。
当某个船闸被打开时,它两侧的两个区段会合并成一个新区段,且其中的水位会被重新平均。
注意:唐老鸭只能打开那些与已经占领的区段相邻的船闸。
情报人员提醒他:如果在任意时刻,已经占领的区段的水位超过所有区段总体的平均水位,那么巴拿马国家安全防御系统就会启动,唐老鸭将被抓获。
请你编写程序 panama,输出一份可行的占领方案;如果不存在这样的方案,则输出 impossible。
输入格式
第一行输入一个整数 N。
第二行输入 N 个整数 h_1, h_2, ..., h_N。
输出格式
输出一行:
- 若存在可行方案,输出
N个互不相同的整数,表示每一步占领的区段编号; - 否则输出
impossible。
数据范围
1 <= N <= 2000001 <= h_i <= 10^8
子任务
| 子任务 | 分值 | 依赖子任务 | N |
其他限制 |
|---|---|---|---|---|
| 1 | 20 | 无 | <= 30 |
无 |
| 2 | 35 | 1 | <= 1000 |
|
| 3 | 15 | 无 | <= 200000 |
设 h_0 = +∞,h_{N+1} = +∞,且满足 h_{i-1} >= h_i <= h_{i+1} 的 i in [1, N] 的个数为 2 |
| 4 | 30 | 1–3 | 无 |
只有当某个子任务及其所依赖的全部子任务全部通过时,才能获得该子任务的分数。
样例 1
输入
5
4 1 1 3 2
输出
2 3 4 5 1
说明
所有区段的平均水位为 2.2。
唐老鸭从编号 2 的区段开始,该区段水位为 1。随后他并入区段 3,此时水位不变。占领区段 4 后,水位升高为 5/3;占领区段 5 后,水位又降为 1.5。打开最后一个船闸后,整体水位与总平均值相等。
由于在整个过程中,占领区段的水位从未超过 2.2,因此占领成功。
样例 2
输入
3
1 2 1
输出
impossible
说明
唐老鸭不能先从区段 2 开始,因为它的水位高于总平均值。若从区段 1 或区段 3 开始,则下一步都必须打开通往区段 2 的船闸,而这同样会使当前水位超过限制。
因此,占领是不可能的。