1406 : 我的背包 永无止境 !

时间限制:1 Sec 内存限制:64 MiB 提交:62 正确:7

提交 状态 论坛

题目描述

众所周知,大熊拥有机器猫-哆啦A梦,它身上的口袋总是能拿出各种神奇的道具来帮助大熊度过眼前的困难。

NQ很是羡慕,所以让Enal大魔法师,不惜任何代价为自己制造一个。可是,Enal大魔法师的魔法学还没有学到家,在经历了9999次失败后,终于变出了一个背包,而这个背包的容量是永无止境的。

“咦,这不是制造出了一个BUG嘛~~”NQ感叹道,因为他发现将这个背包运用到前几天Lzh给自己出的难题中,这个问题将迎刃而解,正因为利用这个BUG导致问题变得So easy,所以NQ懒得再管,就将这个问题交给了你,请你代替NQ解决这个麻烦。

具体问题如下:

一共有 n 块平台,第 i 块平台的高度为 hi,即由 hi 块高度为 1 的砖块叠加而成,NQ能在相邻两块平台之间跳跃的充要条件为:这两块平台的高度差小于等于 k。而对于NQ当前所处的平台,他可以选择从脚下取走若干块砖块放进背包中,也可以从背包中拿出若干块砖块放到脚下(虽然是永无止境的背包,但背包内砖块的数量也不允许为负数,即不可能取出大于背包内砖块数量的砖块),以此使得高度差满足跳跃要求,当然,此问题开始时NQ的背包中拥有 m 块砖块。当NQ能成功从第 1 块平台到达第 n 块平台,并且让第 n 块平台的高度达到 s,则称此问题完美解决,此时输出背包内能够达到的剩余砖块的最大数量;若不能完美解决此问题,则输出 "NO!"(不包含引号)。

输入描述

第一行输入四个整数 n, m, k, s, 代表一共有 n 块平台,初始背包中有 m 块砖块,相邻两块平台之间跳跃的高度差需满足小于等于 k ,达到最后一块平台后使其高度达到 s。

第二行输出 n 个整数,第 i 个整数代表第 i 块平台的高度 hi.

1 ≤ n ≤ 106    0 ≤ m, k, s, hi ≤ 103

输出描述

如果能够完美解决此问题,则输出背包内能够剩余的最大砖块数量,否则输出"NO!"(不含引号)。

样例输入

2 1 1 2
0 1

样例输出

0

来源

逆乾