310779: CF1886E. I Wanna be the Team Leader
Description
Monocarp is a team leader in a massive IT company.
There are $m$ projects his team of programmers has to complete, numbered from $1$ to $m$. The $i$-th project has a difficulty level $b_i$.
There are $n$ programmers in the team, numbered from $1$ to $n$. The $j$-th programmer has a stress tolerance level $a_j$.
Monocarp wants to assign the programmers to the projects in such a way that:
- each programmer is assigned to no more than one project;
- each project has at least one programmer assigned to it;
- let $k$ programmers be assigned to the $i$-th project; then all the assigned programmers have to have a stress tolerance level greater than or equal to $\frac{b_i}{k}$.
Help Monocarp to find a valid assignment. If there are multiple answers, print any of them.
InputThe first line contains two integers $n$ and $m$ ($1 \le n \le 2 \cdot 10^5$; $1 \le m \le 20$) — the number of programmers and the number of projects.
The second line contains $n$ integers $a_1, a_2, \dots, a_n$ ($1 \le a_i \le 10^9$) — the stress tolerance level of each programmer.
The third line contains $m$ integers $b_1, b_2, \dots, b_m$ ($1 \le b_i \le 10^9$) — the difficulty level of each project.
OutputIf there is no valid assignment, print "NO".
Otherwise, in the first line, print "YES". In the $i$-th of the next $m$ lines, print the list of the programmers assigned to the $i$-th project: first, the number of programmers, then their indices in an arbitrary order.
If there are multiple answers, print any of them.
ExamplesInput5 3 4 6 100 5 1 50 1 12Output
YES 1 3 1 5 3 2 4 1Input
5 3 3 6 100 5 1 50 1 12Output
NOInput
5 3 2 2 2 2 4 3 5 1Output
YES 1 5 3 1 2 3 1 4Input
5 1 10 20 30 40 50 4Output
YES 1 4
Output
单卡拉是一家大型IT公司的团队领导。他的团队需要完成m个项目,编号从1到m。第i个项目的难度级别为b_i。团队有n名程序员,编号从1到n。第j名程序员的压力承受级别为a_j。单卡拉希望以这样的方式分配程序员到项目上:每个程序员最多分配到一个项目;每个项目至少有一个程序员分配给它;假设有k名程序员分配到第i个项目,则所有分配的程序员的压力承受级别必须大于或等于b_i/k。帮助单卡拉找到一个有效的分配方案。如果有多个答案,输出其中任何一个。
输入数据格式:
第一行包含两个整数n和m(1≤n≤2×10^5;1≤m≤20)——程序员的数量和项目的数量。
第二行包含n个整数a_1, a_2, …, a_n(1≤a_i≤10^9)——每个程序员的压力承受级别。
第三行包含m个整数b_1, b_2, …, b_m(1≤b_i≤10^9)——每个项目的难度级别。
输出数据格式:
如果没有有效的分配方案,则输出“NO”。
否则,在第一行输出“YES”。接下来的m行中,第i行输出分配给第i个项目的程序员列表:首先输出程序员的数量,然后输出他们的编号,顺序任意。
如果有多个答案,输出其中任何一个。题目大意: 单卡拉是一家大型IT公司的团队领导。他的团队需要完成m个项目,编号从1到m。第i个项目的难度级别为b_i。团队有n名程序员,编号从1到n。第j名程序员的压力承受级别为a_j。单卡拉希望以这样的方式分配程序员到项目上:每个程序员最多分配到一个项目;每个项目至少有一个程序员分配给它;假设有k名程序员分配到第i个项目,则所有分配的程序员的压力承受级别必须大于或等于b_i/k。帮助单卡拉找到一个有效的分配方案。如果有多个答案,输出其中任何一个。 输入数据格式: 第一行包含两个整数n和m(1≤n≤2×10^5;1≤m≤20)——程序员的数量和项目的数量。 第二行包含n个整数a_1, a_2, …, a_n(1≤a_i≤10^9)——每个程序员的压力承受级别。 第三行包含m个整数b_1, b_2, …, b_m(1≤b_i≤10^9)——每个项目的难度级别。 输出数据格式: 如果没有有效的分配方案,则输出“NO”。 否则,在第一行输出“YES”。接下来的m行中,第i行输出分配给第i个项目的程序员列表:首先输出程序员的数量,然后输出他们的编号,顺序任意。 如果有多个答案,输出其中任何一个。