CF1256C Platforms Jumping

题目描述

有一条宽度为 $n$ 的河。河的左岸编号为 $0$,右岸编号为 $n + 1$。河流上还有 $m$ 个木制平台,第 $i$ 个平台的长度为 $c_i$(所以说第i个平台占据河流的 $c_i$ 个连续位置)。保证平台长度的总和不超过 $n$。 你正站在 $0$(左岸),并且想到达右岸即 $n + 1$ 的位置。如果您站在位置x,则可以跳到 $[x + 1; x + d]$ 范围内的任何位置。但是, 你只能跳到木质平台上( _即不能下水_ )。例如,如果 $d = 1$,则只能跳到下一个位置(如果这个位置上有木制平台)。您可以假设单元格 $0$ 和 $n + 1$ 属于木制平台。 您可以将任意平台向左或向右移动任意次数(也可以不移动),只要它们彼此不重叠(但两个平台可以挨在一起)。也就是说你不能更改平台的相对顺序。 **请注意,你应该先移动平台再跳跃(一旦你出发后,你就不能再移动平台了)。** 例如,如果 $n = 7$,$m = 3$,$d = 2$ 和 $c = [1,2,1]$,这就是从左岸跳到右岸的方法之一: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1256C/df0d8d2f8a9c6cd940b3eabc79499fe8d2091270.png)

输入格式

输入的第一行包含三个整数 $n$,$m$ 和 $d$($1\le n$,$m,d\le 1000$,$m\le n$) 输入的第二行包含m个整数$c_1,c_2,\cdots,c_m$($1\le c_i\le n$,$\sum_{i=1}^m c_i \le n$ _【这里打的和原题面格式不太一样,就是说木平台的长度和不大于河宽】_ ),其中 $c_i$ 是第 $i$ 个平台的长度。

输出格式

如果不可能从 $0$ 达到 $n + 1$,则在第一行中输出 `NO`。否则,在第一行中打印 `YES`,在第二行中输出长度为n的数组 输出河流的序列(不输出单元格 $0$ 和单元格 $n + 1$)。 如果河流单元格 $i$ 不属于任何平台,输出 $0$。否则,它应该是等于平台的编号(平台编号是从 $1$ 到 $m$ 输入的顺序)。

说明/提示

Consider the first example: the answer is $ [0, 1, 0, 2, 2, 0, 3] $ . The sequence of jumps you perform is $ 0 \rightarrow 2 \rightarrow 4 \rightarrow 5 \rightarrow 7 \rightarrow 8 $ . Consider the second example: it does not matter how to place the platform because you always can jump from $ 0 $ to $ 11 $ . Consider the third example: the answer is $ [0, 0, 0, 0, 1, 1, 0, 0, 0, 0] $ . The sequence of jumps you perform is $ 0 \rightarrow 5 \rightarrow 6 \rightarrow 11 $ .