#402. [R64F]购买

[R64F]购买

时空限制

2S/512M

题目描述

一条街上排着 nn 个商铺,编号为 11nn。其中第 ii 个商铺售卖一件独一无二的纪念品,价格为 aia_i 元。

由于纪念品是独一无二的,整条街上每件纪念品仅此一件。一旦有顾客买走了某件纪念品,该纪念品就会从商铺中下架,后续的顾客将无法再看到或购买它。

现在有 mm 个人依次(按照编号 11mm 的顺序)进入这条街购物。第 jj 个人带了 xjx_j 元,他们都会沿着街从第 11 个商铺一直走到第 nn 个商铺。

每个人的购物策略都是极其贪心的:他们从前往后经过每个商铺时,如果该商铺的纪念品尚未被别人买走,且自己当前手里的钱足够买下它,就一定会将其买下,手里的钱也随之减少对应的价格,商品随之永久下架;如果钱不够,或者该商品已被先前的顾客买走,则直接走过。

请计算出每个人最终买到的纪念品数量,以及他们具体买下了哪些商铺的纪念品。

格式

输入格式

第一行包含两个正整数 nnmm,分别表示商铺的数量以及购物的人数。

第二行包含 nn 个正整数 a1,a2,,ana_1, a_2, \dots, a_n,依次表示第 11 到第 nn 个商铺初始纪念品的价格。

第三行包含 mm 个正整数 x1,x2,,xmx_1, x_2, \dots, x_m,依次表示每个人初始带的钱数。

输出格式

输出共 mm 行。

jj 行(1jm1 \le j \le m)首先输出一个整数 CjC_j,表示第 jj 个人最终买到的纪念品数量。紧接着输出 CjC_j 个正整数,依次表示其买到的纪念品对应的商铺编号(按购买顺序,即编号从小到大输出)。一行中的各个整数之间用一个空格隔开。

如果某人最终没有购买任何纪念品,则在该行只需输出一个数字 0

样例

样例输入 #1

5 3
10 2 5 1 7
8 15 3

样例输出 #1

3 2 3 4
1 1
0

样例输入 #2

4 2
100 50 30 20
80 110

样例输出 #2

2 2 3
1 1

数据规模

注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。

子任务编号 分数 n,mn, m\le
11 2020 30003000
22 8080 2×1052\times 10^5

对于 100%100\% 的数据,1n,m2×1051 \le n, m \le 2 \times 10^51ai1091 \le a_i \le 10^91xj2×10141 \leq x_j \le 2 \times 10^{14}