페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
5
ms
메모리 제한
1024
MB
명의 학생이 있는 학급에서 의무 과제인 발표를 할 시간이 되었다. 대부분의 학생은 자신의 발표를 하게 되어 매우 들떠 있으며 자기 차례를 좀처럼 기다리지 못한다. 먼저 학생들을 세 그룹으로 나누어야 한다. 그러면 그룹 의 모든 학생은 그룹 에게, 그룹 은 그룹 에게, 그룹 은 그룹 에게 발표한다.
이렇게 그룹을 나눌 때 한 가지 복잡한 점은 학생들의 포부 수준이 서로 다르다는 것이다. 각 학생 은 적어도 명에게 발표하기를 요구한다. 따라서 학생 이 그룹 에 속하게 된다면, 학생 이 만족하려면 그룹 에 적어도 명의 구성원이 있어야 한다.
[!h]

이 이미지는 첫 번째 예제에 해당한다.
여러분의 과제는 학생들의 포부 수준이 주어졌을 때, 모든 학생이 만족하도록 학생들을 세 그룹으로 나눌 방법이 있는지 판별하고, 있다면 올바른 분할을 찾는 것이다.
여러분의 풀이는 각각 일정한 점수가 배정된 여러 테스트 그룹으로 평가된다. 각 테스트 그룹에는 여러 테스트 케이스가 포함된다. 한 테스트 그룹의 점수를 얻으려면 그 테스트 그룹의 모든 테스트 케이스를 해결해야 한다.
그룹 | 점수 | 제약 조건
||
||
||
||
|| 추가 제약 조건 없음.
첫 번째 줄에는 학급의 학생 수를 나타내는 정수 ()이 주어진다.
두 번째 줄에는 개의 정수 ()가 주어지며, 는 번째 학생이 발표를 들려주고자 하는 최소 학생 수이다.
올바른 분할이 없다면 문자열 ```NO`''만 포함된 한 줄을 출력한다.
올바른 분할이 있다면 먼저 문자열 ```YES''만 포함된 한 줄을 출력한다. 그런 다음, 문자 1, 2, 3`으로 이루어진 문자열 을 한 줄에 출력한다.
이 문자열의 위치에 있는 문자는 학생 이 어느 그룹에 속하는지를 나타낸다. 해가 여러 개라면 그중 아무거나 출력해도 된다.
10
1 3 1 3 3 2 4 1 5 2
YES
3313332121
3
1 2 2
NO
Programmeringsolympiaden
로그인 상태를 확인하는 중입니다.