问题描述 |
---|
故事的背景是这样的:在一个王国里有 n 名士兵,每个士兵都有一个战斗力。有一天,一名巫师告诉国王,她预测到在接下来的m天里,每天都会有一个怪物来攻城。于是国王决定:在这m天里,每天派出一个刚好能打过这个怪物的士兵去迎战。假设怪物的战斗力为a,那么国王会在所有士兵中选出战斗力大于a的最弱的士兵,如果找不到任何一个士兵战斗力大于a,那么国王就会派出战斗力最强的三个士兵去迎战(三英战吕布)。如果采用了1对1的作战方式,那么在作战完毕后,那个士兵的战斗力会下降a点;如果采用了3对1的作战方式,那么这三个士兵就会在战斗中牺牲。你的任务是,在这m天战斗结束以后,帮国王统计存活士兵的信息。 |
输入描述 |
第一行有两个正整数 n 和 m ,分别表示士兵的数量和战斗的天数。(1 <= m <= 10000,3m <= n <= 100000) 第二行有 n 个正整数 a[i] 表示第 i 个士兵的战斗力。(1 <= a[i] <= 1e9) 第三行有 m 个正整数 b[i] 表示第 i 天的怪物的战斗力。(1 <= b[i] <= 1e9) |
输出描述 |
由战斗力从小到大的顺序输出存活士兵的战斗力和人数,两者之间用空格隔开,最后换行。 例如:最后还剩五个士兵,战斗力分别为1、1、2、5、3,你应该按照“战斗力 人数”的格式对他们进行输出。 1 2 // 战斗力为1的士兵有两个 2 1 // 战斗力为2的士兵有一个 3 1 // 战斗力为3的士兵有一个 5 1 // 战斗力为5的士兵有一个 |
样例输入复制样例 |
6 2 1 2 3 4 5 6 5 6 |
样例输出 |
1 2 2 1 |
提示说明 |
第一天怪物的战斗力为5,所以战斗力为6的士兵去迎战,战斗结束后,这名士兵的战斗力变成 6 - 5 = 1。 第二天怪物的战斗力为6,此时找不到战斗力大于6的士兵,所以战斗力为3、4、5的三名士兵会去迎战,光荣牺牲。 最后只剩下两个战斗力为1的士兵和一个战斗力为2的士兵。 |
相关 |