有一队粮食车队,每队运来K辆粮车;
有若干副将按序排队,每人需求若干辆粮车;
规则:
古代战争时期,各县向前线战场运送粮食,各县提供的粮食车数不一样,到达前线后需排队进入军营,一次只能进入一个县车队,同时军营中的多个副将排队领取粮食,排在第 1 名的为 L1 ,第 2 名为 L2 ,以此类推。
将军制定了一套发放规则:
假设当前进入营寨的县车队运来的粮食车数为 K
1、若 K 等于当前副将的需求,则直接领走,县车队跟随副将一起离开队伍。继续下一轮】
2、若 K 大于当前副将 L1 的需求,则把后续营的需求纳入进来一起看,即找一个数字,使领取。前 i 个副将的总需求刚好小于等于 K ,但前 i+1 个副将的总需求大于 K 。此时将该县车队粮食全部分给这 i 个副将,然后下一个县车队进入军营,下一个副将(即编号 i+1 的副将)作为队首开始下一轮领取。
3、若 K 小于当前副将需求,则该营放弃本次领取,走到队尾重新排队。
问按照此规则发放,最终有多少个副将不能领导粮食?
输入为两行:
第 1 行为各县粮车数的数组 cars ,空格分隔,car 表示编号 i(i<=1000) 的县运来的粮食车数 (1<=car[i]<=100)。例如: 3 5 7 9 3 2 1
第 2 行为各副将需求数组 generalRequires 数,空格分隔,generalRequires[j] 表示编号
j (j<=1000)的副将的需求数(1<=generalRequires[i]<=100)。
例如:1 2 4 5 2
非法输入返回 −1
输出不能分到粮食的副将人数。
例如:
0 表示没有副将不能分到粮食
1 表示有 1 名副将不能够分到足够的粮食
2 表示有 2 名副将不能分到粮食,以此类推
输入
1
5 6
输出
2
说明
没有车数能够满足副将需求,所有副将均未能领到粮食,输出未领取粮食副将个数 2
输入
3 5 7 3 4
2 4 8 5 2
输出
1
说明
1、0 号车队(3 车粮食)被 0 号副将( 1 车需求)领走:
[3],5,7,3,4
[1],4,8,5,2
2、1 号车队被 1 号副将领走:
[3],[5],7,3,4
[1],[4],8,5,2
3、2 号车队( 7 车粮食)不能满足 2 号副将( 8 车需求),因此 2 号副将重新排队:
[3],[5],7,3,4
[1],[4],5,2,[8]
3、2 号车队( 7 车粮食)被下 2 个副将( 5+2 车需求)领走:
4、8 车需求的副将始终领不到粮食,因此输出副将个数为 1
输入
3 5 7 9 3 2 1
1 2 4 5 2
输出
0
说明
1、0 号车队被 0、1 号副将领走:
[3],5,7,9,3,2,1
[1,2],4,5,2
2、1 号车队被 2 号副将领走:
[3],[5],7,9,3,2,1
[1,2],[4],5,2
3、2 号车队被 3、4 号副将领走:
[3],[5],[7],9,3,2,1
4、所有副将都领取到了粮食,返回结果 0