E. I Wanna be the Team Leader
bitmasks; constructive algorithms; dp; greedy; math; sortings; two pointers
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.
The 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.
If 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.