사회적 거리두기를 지키기 위해서 넥슨은 재택 근무를 실시하고 있다. 다만, 각 개발자들에게는 반드시 사무실에 출근하는 날수가 지정되어 있다. 매일매일 게임 개발자들은 출근할 수도, 재택 근무할 수도 있지만, 주어진 기간 동안 자신에게 주어진 출근하는 날수만큼 반드시 출근해야 한다. 또한, 매일매일 사무실에는 최대 근무할 수 있는 사람 수의 제한이 있으며, 이보다 많은 사람이 출근해서 일할 수는 없다.
예를 들어, 총 일하는 날이 일이고, 명의 개발자들마다 반드시 출근해야 하는 날이 다음과 같이 주어졌다고 하자. 각 개발자는 정해진 출근 날수보다 적거나 많이 출근할 수 없다.
개발자 | 출근 날수 |
---|---|
개발자 | 출근 일 |
개발자 | 출근 일 |
개발자 | 출근 일 |
개발자 | 출근 일 |
만약 일 동안 매일 최대 출근할 수 있는 사람 수가 차례로 , , , , 이라고 하면 다음과 같이 근무표를 짜면 모든 개발자가 조건을 맞출 수 있다.
일자 | 출근하는 개발자 |
---|---|
일 | 개발자 , 개발자 , 개발자 |
일 | 개발자 , 개발자 |
일 | 개발자 , 개발자 , 개발자 |
일 | 개발자 , 개발자 |
일 | 개발자 , 개발자 , 개발자 |
모든 개발자들의 출근해야 하는 날수와, 매일 사무실에서 근무할 수 있는 최대 사람 수가 주어졌을 때 이 조건을 만족하게 근무표를 작성하는 프로그램을 작성하시오.
첫 줄에는 넥슨에서 일하는 개발자 수를 나타내는 정수 과 근무하는 날수를 나타내는 정수 가 공백으로 구분되어 주어진다. ()
둘째 줄에는 개의 정수가 공백으로 구분되어 주어지는데, 이는 차례대로 각 개발자가 출근해야 하는 날수를 나타낸다. 이 수들은 모두 이상 이하이다.
셋째 줄에는 개의 정수가 공백으로 구분되어 주어지는데, 이는 차례대로 매일매일 사무실에서 일할 수 있는 사람 수의 최댓값을 나타낸다. 이 수들은 모두 이상 이하이다.
항상 주어진 조건을 만족하게 근무표를 작성할 수 있도록 입력이 주어진다.
총 줄로 출력한다.
번째 줄은 번째 날의 근무표를 나타낸다. 이 줄의 첫 번째 수 는 번째 날 근무하는 사람 수를 나타낸다. 다음 개의 수를 공백으로 구분하여 출력하는데, 이는 이 날 근무하는 개발자를 나타낸다.
각 개발자는 입력받은 순서대로 으로 표현하는데 유의하라.
만약, 가능한 답이 여러 가지인 경우 그중 아무거나 하나 출력한다.
4 5 3 2 5 3 3 2 3 2 3
3 3 1 4 2 1 3 3 3 4 1 2 3 2 3 4 2 3
첫 날은 최대 명이 근무할 수 있으며, 이날 개발자 , , 가 근무한다.
둘째 날은 최대 명이 근무할 수 있으며, 이날 개발자 , 이 근무한다.
셋째 날은 최대 명이 근무할 수 있으며, 이날 개발자 , , 가 근무한다. 이 시점에서 개발자 은 자신이 출근해야 하는 날을 모두 채웠다.
넷째 날은 최대 명이 근무할 수 있으며, 이날 개발자 , 이 근무한다.
다섯째 날은 최대 명이 근무할 수 있으며, 이날 개발자 , , 가 근무한다. 이 시점에서 개발자 , , 는 모두 자신이 출근해야 하는 날을 모두 채웠다.
따라서 이 근무표는 조건을 만족함을 알 수 있다.
입력 케이스들은 다음과 같은 종류로 구별되며, 한 종류의 케이스를 다 맞추어야 그 종류에 배정된 점수를 받을 수 있다.
종류 1: 42점
종류 2: 58점
추가적인 제한 조건이 없음.