#N1007. 新年拍卖会

新年拍卖会

本题目原作者为

题目背景

为了庆祝新年,刘星和他的小伙伴们举行了一场“拍卖会”。每个人都带了一定的钱,将会轮流出价,拍卖场上的 nn 个奖品。到底结果如何?让我们一起看看吧!

题目描述

拍卖场上一共有 nn 件奖品(编号 1n1-n),每个奖品都有一个起拍价 aia_i。刘星一共有 mm 个小伙伴(编号 1m1-m,作为拍卖会组织者的刘星是 11 号),每个人初始都有 bib_i 元零花钱进行竞拍。竞拍规则如下:

  1. 按奖品编号从小到大的顺序,依次竞拍每个奖品。
  2. 每个奖品竞拍时,小伙伴们按编号 1m1-m 的顺序轮流出价(每人仅能出一次价),出价必须严格大于当前最高出价(初始最高出价为该奖品的起拍价),且不能超过自己剩余的零花钱;
  3. 小伙伴出价时,会选择能出的最小有效价格(即当前最高出价 +1+ 1),如果这个价格超过自己剩余的钱,就放弃出价;
  4. 只要有一个小伙伴出价成功,该奖品就归他所有,他的剩余零花钱扣除本次出价金额,这个奖品的竞拍立刻结束;若所有小伙伴都无法出价,则该奖品会被流拍。

请你编程计算:

  • 每个奖品最终被谁拍走(若流拍,则输出 00
  • 每个小伙伴最终剩余的零花钱数是多少。

输入格式

第一行输入两个整数 n,mn,m,分别表示奖品数量和参与竞拍的小伙伴数量。
第二行输入 nn 个整数 a1,a2,...,ana_1,a_2,...,a_n,依次表示每个奖品的起拍价。
第三行输入 mm 个整数 b1,b2,...,bmb_1,b_2,...,b_m,依次表示每个小伙伴初始的零花钱数。

输出格式

第一行输出 nn 个整数,第 ii 个数表示第 ii 个奖品被哪位小伙伴拍走(若流拍则输出 00);
第二行输出 mm 个整数,第 ii 个数表示第 ii 个小伙伴最终剩余的零花钱数。

输入输出样例

2 2
10 15
20 30
1 2
9 14

说明/提示

数据范围

1n,m201≤n,m≤20