CF1886E I Wanna be the Team Leader

题目描述

Monocarp是一家大型IT公司的团队负责人。 他的编程团队需要完成 $ m $ 个项目,编号从 $ 1 $ 到 $ m $ 。第 $ i $ 个项目的难度级别为 $ b_i $ 。 团队中有 $ n $ 名程序员,编号从 $ 1 $ 到 $ n $ 。第 $ j $ 名程序员具有应对压力的能力水平 $ a_j $ 。 Monocarp希望以以下方式分配程序员到项目中: - 每个程序员最多只能分配给一个项目; - 每个项目至少有一个程序员被分配; - 假设有 $ k $ 名程序员被分配到第 $ i $ 个项目;那么所有被分配的程序员的应对压力水平必须大于或等于 $ \frac{b_i}{k} $ 。 帮助Monocarp找到一个有效的分配方案。如果存在多个答案,随意输出一个即可。

输入格式

第一行包含两个整数 $ n $ 和 $ m $ ( $ 1 \le n \le 2 \cdot 10^5 $ ; $ 1 \le m \le 20 $ )——程序员数量和项目数量。 第二行包含 $ n $ 个整数 $ a_1, a_2, \dots, a_n $ ( $ 1 \le a_i \le 10^9 $ )——每个程序员的应对压力水平。 第三行包含 $ m $ 个整数 $ b_1, b_2, \dots, b_m $ ( $ 1 \le b_i \le 10^9 $ )——每个项目的难度级别。

输出格式

如果没有有效的分配方案,输出 "NO"。 否则,在第一行输出 "YES"。在接下来的 $ m $ 行中,按任意顺序输出被分配到第 $ i $ 个项目的程序员列表:首先输出程序员数量,然后按任意顺序输出他们的索引。 如果存在多个答案,随意输出一个即可。