#NH4688. NH.2012.初中.04.剪草
NH.2012.初中.04.剪草
题目描述
有 N 棵小草,编号 0 至 N-1 。奶牛Bessie不喜欢小草,所以 Bessie 要用剪刀剪草,目标是使得这 N 棵小草的高度总和不超过 H 。在第 0 时刻,第 i 棵小草的高度是 h[i] ,接下来的每个整数时刻,会依次发生如下三个步骤:
-
每棵小草都长高了,第 i 棵小草长高的高度是 grow[i]。
-
Bessie选择其中一棵小草并把它剪平,这棵小草高度变为 0 。注意:这棵小草并没有死掉,它下一秒还会生长的。
-
Bessie计算一下这N棵小草的高度总和,如果不超过H,则完成任务,一切结束,否则轮到下一时刻。
你的任务是计算:最早是第几时刻,奶牛 Bessie 能完成它的任务?如果第 0 时刻就可以完成就输出 0 ,如果永远不可能完成,输出 -1 ,否则输出一个最早的完成时刻。
输入格式
第一行,两个整数 N 和 H ( 1 ≤ N ≤ 50,0 ≤ H ≤ 1000000 )。
第二行,N 个整数,表示 h[i] ( 0 ≤ h[i] ≤ 100000 )。
第三行,N 个整数,表示 grow[i] ( 1 ≤ grow[i] ≤ 100000 )。
对于 20% 的数据,1 ≤ N ≤ 7 。
输出格式
一个整数,最早完成时刻或 -1 。
样例
3 16
5 8 58
2 1 1
1
2 58
5 8
2 1
0
2 0
5 8
2 1
-1
7 33
5 1 6 5 8 4 7
2 1 1 1 4 3 2
5
样例解释
样例 1 :到了第1时刻,三棵小草的高度依次是 7,9,59 。如果奶牛 Bessie 把高度是 59 的小草剪掉,那么三棵小草高度是 7+9+0=16 ,任务完成。
样例 4 :第 1 秒剪第 2 棵小草,第 2 秒剪第 0 棵小草,第 3 秒剪 6 棵小草,第 4 秒剪第 5 棵小草,第 5 秒剪第 4 棵小草。