#P13326. [GCJ 2012 #2] Mountain View
[GCJ 2012 #2] Mountain View
Description
你正在山脉中行走。在这片山脉中,每隔一公里就有一座山峰,且中间没有其他山峰。在每一座山峰上,你都会躺下来休息,向前眺望,并会觉得前方某一座山峰是最高的。实际上,看起来最高的山峰未必真的最高,原因有两个:可能有一座更高的山峰被离你更近但较矮的山峰挡住了;或者你是在俯视,远处的山峰看起来比附近的更高。
更准确地说,当我们说从山峰 看过去,山峰 看起来最高,意思是: 比 更靠前; 和 之间的所有山峰都在连接 和 的直线下方; 之后的所有山峰都在该直线下方或正好在直线上。
你并不知道每座山峰的具体高度,但你记忆力极佳——你去过所有山峰,并且记得每座山峰上看起来最高的是哪一座。你希望构造一组山峰的高度,使其与这些观测信息一致。注意你是躺着看的,所以我们假设你总是从每座山峰的地面水平观测。

在这个例子中,从第一座和第三座山峰看,第四座山峰看起来最高。当你躺在第二座山峰时,看不到第四座,因为第三座挡住了视线,所以第三座看起来最高。
Input Format
输入的第一行为测试用例数 。接下来有 组测试数据,每组两行。第一行为一个整数 ,表示山峰数量。你从第 座山峰出发,依次前进到第 座。下一行有 个整数 ,第 个数表示从第 座山峰看起来最高的是第 座山峰(注意第 座山峰是最后一座,从那里看不到别的山峰)。
Output Format
对于每个测试用例,输出一行 "Case #: \dots ",其中 为测试用例编号(从 开始), 表示第 座山峰的高度。你可以输出任意一组与输入观测信息一致的解,但所有高度必须是 到 之间的整数。
如果不存在满足条件的解,则输出 "Case #: Impossible"。
4
6
2 3 4 5 6
4
4 4 4
4
3 4 4
4
4 3 4
Case #1: 10 10 10 10 10 2
Case #2: 10 20 40 80
Case #3: Impossible
Case #4: 5 3 6 8
Hint
限制条件
测试集 1(13 分,结果可见)
测试集 2(14 分,结果隐藏)
翻译由 ChatGPT-4.1 完成。
京公网安备 11011102002149号