AT_maximum_cup_2018_d Many Go Round
题目描述
一天,S君决定驾车在一条环形道路上兜风。
这条道路上设置了等距离的休息站,编号从 $0$ 到 $M-1$。S君从编号为 $0$ 的休息站出发,按照 $0 \rightarrow 1 \rightarrow 2 \rightarrow \ldots \rightarrow (M - 2) \rightarrow (M - 1) \rightarrow 0 \rightarrow 1 \rightarrow 2 \rightarrow \ldots$ 的顺序循环行驶。
S君的车每用 1 升油可以行驶一个休息站的距离。然而,在补充燃料时,他必须从预先准备好的 $N$ 个燃料箱中选择一个或多个进行补给。每个燃料箱的容量分别为 $a_1, a_2, \ldots, a_N$ 。由于燃料箱一旦被使用就会被清空,不能重复使用。因此,要想在某个特定休息站停下,S君必须确保选择的燃料量在到达该休息站时正好耗尽。
S君计划与朋友在编号为 $L$ 的休息站会合,他希望从编号为 $0$ 的休息站出发,并确保车辆在不超过 $X$ 周的情况下恰好停在编号为 $L$ 的休息站。若车绕行超过 $X$ 周,则违反交通条例。
请判断是否存在一种选择燃料箱的方式,使得 S君能够在规定的 $X$ 周内正好停在编号为 $L$ 的休息站。其中,出发时即为第 1 周,当再次回到编号为 $0$ 的休息站时,进入下一周。
输入格式
输入从标准输入读取,格式如下:
> $N$ $M$ $L$ $X$ $a_1$ $a_2$ $\ldots$ $a_N$
第一行包括四个整数:燃料箱数量 $N$、休息站数量 $M$、目标休息站编号 $L$ 以及最大允许的绕圈周数 $X$。
第二行是 $N$ 个正整数,表示每个燃料箱的燃料容量 $a_i$。
输出格式
如果能够在 $X$ 周内达到编号为 $L$ 的休息站,则输出 `Yes`;否则输出 `No`。
说明/提示
- $1 \leq N \leq 10000$
- $3 \leq M \leq 1000$
- $1 \leq L \leq M - 1$
- $2 \leq X \leq 10000$
- $1 \leq a_i \leq 10000$
### 样例解释 1
无法通过单个燃料箱组合出周长 $7$(第一周的距离)。但 $1 + 8 + 9 = 18$ 可以达到一周加上目标编号 $L$ 的总距离$(11+7=18)$,因此能在第 2 周(满足 $\leq X = 5$)停下。
### 样例解释 2
无法组合出 $3$(第一周的距离)或 $8$(第二周的距离)。然而,用 $1 + 12 = 13$ 能达到两周加上目标编号$(10+3)$ 的总距离,因此能在第 3 周停下。但是,由于超过了规定最大 $X = 2$ 周,因此输出 `No`。
### 样例解释 3
无论如何组合都无法形成 $3$(第一周的距离)、$13$(第二周的距离)、$23$(第三周的距离)、或 $33$(第四周的距离)。
**本翻译由 AI 自动生成**