Автор: | ONTI | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 512 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 20 |
В связи с переездом в новый офис компании необходимо распределить опенспейсы между отделами. Известно, что в компании N отделов, в i-ом отделе Ai cотрудников. Теперь перед генеральным директором стоит задача: выделить каждому отделу собственный опенспейс. В новом офисе есть M ≤ N опенспейсов, в j-ом опенспейсе есть Bj рабочих мест. Для работы отдела необходимо, чтобы у каждого сотрудника было своe рабочее место, и ещe одно место нужно для начальника отдела. К сожалению, ремонт опенспейсов завершeн и изменить расстановку рабочих мест невозможно. Помогите генеральному директору распределить отделы компании по опенспейсам.
Напишите программу, которая найдет, какое максимальное количество отделов удастся одновременно распределить по опенспейсам, чтобы всем сотрудникам отдела хватило рабочих мест, и при этом осталось еще хотя бы одно для начальника отдела.
Для справки. Оpen space в переводе с английского - офис открытого типа, то есть помещение спланировано таким образом, что создается единое рабочее пространство для сотрудников.
На первой строке входного файла расположены числа N и M (1 ≤ N ≤ M ≤ 1000). На второй строке расположено N чисел - A1, . . . , AN (1 ≤ Ai ≤ 1000 для всех 1 ≤ i ≤ N). На третьей строке расположено M чисел B1, ..., BM (1 ≤ Bj ≤ 1000 для всех 1 ≤ j ≤ M).
Выведите на первой строке число P - количество отделов, которые удастся распределить по опенспейсам. На второй строке выведите распределение отделов по опенспейсам - N чисел, i-е число должно соответствовать номеру опенспейста, в котором разместится i-ый отдел (нумерация отделов и опенспейсов начинается с 1).
Если i-ый отдел остался без опенспейсов, i-е число должно быть равно 0. Если допустимых распределений несколько, выведите любое из них.
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|