给你两个下标从 0 开始 的整数数组 warriors 和 mosters,长度分别为 n 和 m 。warriros[i] 是第 i 名勇士被怪兽的克制系数 ,而 monsters[j] 是打败第 j 个怪物所需要的时间(单位:天)。
鉴于前方战火紧急,而且勇士分身乏术,每次只能同时攻击一个怪物,而且开始选择打一个怪物之后是不能停下来的。每天都会按照顺序生成一只怪物,第 0 只怪物从第 0 天出现(在此之前无法被攻击),第 j 名怪物在第 j 天出现。开始攻击第 j 名怪物时,你必须选择一个被怪兽的克制系数最小的无任务勇士(没有正在打其他怪),如果存在多个被怪兽的克制系数相同的勇士,就选择下标最小的那一个。如果一个空闲勇士在 t 时刻去打一个怪物,那么在 t + monsters[j] 的时刻他就已经击败了怪物,并且可以在当天开始攻击下一只。
如果没有空闲的勇士,那么怪物就不会被人攻击,直到一个空闲的勇士忙完其他怪物,就会马上来攻击剩余的怪物。因为怪物很恐怖,待的时间久了会变异,如果有多个怪物需要被清除,那么就先打来的早的怪物。
如果同一时刻存在多个空闲的勇士,可以同时将多项打怪任务分别分配给它们。
构建长度为 m 的答案数组 ans ,其中 ans[j] 是第 j 个怪物分配的勇士的下标。
返回答案数组 ans 。
输入格式 第一行输入两个数字 m 和 n
第二行输入 m 个数字,分别是每个勇士的被怪兽的克制系数
第三行输入 n 个数字,分别是每个怪物被消灭需要的时间
输出格式 共 1 行,n个数字,分别是每个怪物最终是被哪个勇士消灭的,输出勇士下标
样例 #1 样例输入 #1 3 6 3 3 2 1 2 3 2 1 2 样例输出 #1 2 2 0 2 1 2 样例解释 #1
warriors.length == n monsters.length == m 1 <= n, m <= 2000 1 <= warriors[i], monsters[j] <= 2000
对于 100% 的数据来说:
warriors.length == n monsters.length == m 1 <= n, m <= 2 * 10^5 1 <= warriors[i], monsters[j] <= 2 * 10^5