Олимпиадный тренинг

Задача . E. I Wanna be the Team Leader


Монокарп является руководителем команды в крупной IT-компании.

Его команде программистов поручены \(m\) проектов, пронумерованных от \(1\) до \(m\). У \(i\)-го проекта уровень сложности \(b_i\).

В команде \(n\) программистов, пронумерованных от \(1\) до \(n\). У \(j\)-го программиста уровень стрессоустойчивости \(a_j\).

Монокарп хочет назначить программистов на проекты таким образом, чтобы:

  • каждый программист был назначен на не более чем один проект;
  • на каждый проект был назначен хотя бы один программист;
  • пусть на \(i\)-й проект назначены \(k\) программистов; тогда все назначенные программисты должны иметь уровень стрессоустойчивости, больший или равный \(\frac{b_i}{k}\).

Помогите Монокарпу назначить программистов на проекты. Если есть несколько ответов, выведите любой из них.

Входные данные

В первой строке записаны два целых числа \(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». В \(i\)-й из следующих \(m\) строк выведите список программистов, назначенных на \(i\)-й проект: сначала количество программистов, затем их индексы в произвольном порядке.

Если есть несколько ответов, выведите любой из них.


Примеры
Входные данныеВыходные данные
1 5 3
4 6 100 5 1
50 1 12
YES
1 3
1 5
3 2 4 1
2 5 3
3 6 100 5 1
50 1 12
NO
3 5 3
2 2 2 2 4
3 5 1
YES
1 5
3 1 2 3
1 4
4 5 1
10 20 30 40 50
4
YES
1 4

time 2000 ms
memory 512 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя