CF581B Luxurious Houses

题目描述

贝尔兰的首都有 $n$ 栋多层建筑。这座城市的建筑师非常有创意,因此所有的房子都被建在了一排。 我们将所有的房子从左到右依次编号,从 1 开始。如果一栋房子的楼层数严格大于所有编号比它大的房子的楼层数,那么这栋房子被认为是“豪华的”。换句话说,如果一栋房子的楼层数严格大于它右边所有房子的楼层数,则该房子是“豪华的”。在本题中,假定所有房子的楼层高度相同。 新的建筑师对于 $n$ 个问题很感兴趣,第 $i$ 个问题如下:“需要在第 $i$ 栋房子的楼上加几层,才能让它变成‘豪华的’?”(对于所有 $1 \leq i \leq n$)。请你帮助他解决这个任务。 请注意,所有这些问题都是互相独立的 —— 对于第 $i$ 栋房子的回答不会影响其他房子的答案(也就是说,并不会真正加层楼)。

输入格式

输入的第一行包含一个整数 $n$($1 \leq n \leq 10^{5}$)—— 贝尔兰首都的房子数量。 第二行包含 $n$ 个用空格分隔的正整数 $h_i$($1 \leq h_i \leq 10^{9}$),其中 $h_i$ 表示第 $i$ 栋房子的楼层数。

输出格式

输出 $n$ 个整数 $a_1, a_2, ..., a_n$,其中 $a_i$ 表示要让第 $i$ 栋房子变成“豪华的”需要增加的楼层数。如果这栋房子已经是“豪华的”,无需增加楼层,则 $a_i=0$。 所有房子的编号从左到右依次为 1 开始。

说明/提示

由 ChatGPT 5 翻译