小马和她的操作系统考试

小马和她的操作系统考试

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

Description

临近考试周,小马正在复习操作系统的内存分配算法。小马对内存分配算法中的最佳适应算法特别感兴趣,关于最佳适应算法的定义如下:

  • 最佳适应算法(best-fit):从全部空闲区中找出能满足作业要求的,且大小最小的空闲分区,这种方法能使碎片尽量小。

假设我们现在有三个内存大小分别为 \(1, \ 3, \ 5\) 的空闲分区,现在有一个大小为 \(2\) 的作业想要被分配内存,最佳适应算法需要找到一个内存大于等于 \(2\) 的并且最小的的空闲分区来分配这个作业,自然选择内存大小为 \(3\) 的空闲分区,内存大小为 \(3\) 的空闲分区被大小为 \(2\) 的作业占用后,还剩大小为 \(1\) 的内存,所以三个空闲分区的内存大小变成了 \(1, \ 1, \ 5\)。

现在给出 \(n\) 个内存大小为 \(a_i\)(\(1 \leq i \leq n\))的空闲分区,依次有 \(m\) 个大小为 \(b_i\) (\(1 \leq i \leq m\))的作业需要被分配,请帮助小马计算一下每个作业被分配到下标为多少的空闲分区,如果该作业不能被分配,则输出 \(-1\)。

tip:如果有两个空闲分区内存相等,优先选取下标小的。

Format

Input

第一行输入两个正整数 \(n\),\(m\),表示空闲分区和作业的个数。
第二行输入 \(n\) 个正整数,第 \(i\) 个数字 \(a_i\) 的大小表示第 \(i\) 个空闲分区的大小。
第三行输入 \(m\) 个正整数,第 \(i\) 个数字 \(b_i\) 的大小表示第 \(i\) 个作业的大小。

\(50\%\) 的数组保证,\(1 \leq n,\ m \leq 3000\),\(1 \leq a_i,\ b_i \leq 10^5\)
\(70\%\) 的数组保证,\(1 \leq n,\ m \leq 10^4\),\(1 \leq a_i,\ b_i \leq 10^9\)
\(100\%\) 的数组保证,\(1 \leq n,\ m \leq 10^5\),\(1 \leq a_i,\ b_i \leq 10^9\)

Output

输出 \(m\) 个正整数,第 \(i\) 个正整数表示第 \(i\) 个作业被分配到对应数字下标的空闲分区里。
数字和数字之间用空格分开。

Sample 1

Input

2 3
50 100
51 50 50

Output

2 1 -1

Limitation

1s, 1024KiB for each test case.

验题

未参加
状态
已结束
规则
ACM/ICPC
题目
8
开始于
2021-12-17 22:15
结束于
2021-12-18 22:15
持续时间
24.0 小时
主持人
参赛人数
4