아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Triangeltal

시간 제한5초메모리 제한1024 MB

요약
N명의 학생을 세 개의 비어 있지 않은 모둠으로 나누어, 각 학생이 속한 모둠의 다음 모둠 인원이 A_i명 이상이 되도록 하거나 불가능함을 판정한다.
난이도

보통10점 중 6점

유형
그리디, 정렬, 구현
정답자
아직 제출이 없습니다

문제

I en klass med NN elever har det blivit dags för det obligatoriska momentet att hålla tal. De flesta av eleverna ser fram emot att hålla tal väldigt mycket, och kan knappt vänta på sin tur. Men först måste de delas in i tre grupper. Alla i grupp 11 kommer sedan presentera för grupp 22, grupp 22 för grupp 33, och grupp 33 för grupp 11.

Något som krånglar till den här gruppindelningen är att eleverna har olika ambitionsnivå. Varje elev ii kräver att få hålla tal inför minst A_iA\_i personer. Så om elev nummer ii exempelvis hamnar i grupp 11, så måste grupp 22 ha minst A_iA\_i medlemmar för att elev ii ska bli nöjd.

Bilden motsvarar första exemplet.

Du får givet de NN talen A_iA\_i, och din uppgift är att avgöra om det finns ett sätt att dela in eleverna i tre grupper så att alla blir nöjda, och hitta i så fall en giltig indelning.

입력

Den första raden innehåller ett heltal NN (3≤N≤5⋅1053 \leq N \leq 5 \cdot 10^5), antalet elever i klassen.

Den andra raden innehåller NN heltal A_iA\_i (1≤A_i≤N1 \leq A\_i \leq N), där A_iA\_i är antalet elever den ii:te eleven minst vill hålla ett tal inför.

출력

Om det inte finns en giltig indelning, skriv ut en enda rad med strängen "NO".

Om det finns en giltig indelning, skriv först ut en rad med strängen "YES". Skriv därefter ut en rad med en sträng SS bestående av tecknen 11, 22 och 33. Tecknet på plats ii i denna sträng indikerar vilken grupp elev ii hamnade i. Om det finns flera lösningar kan du skriva ut vilken som helst.

예제2

  1. 예제 1

    입력
    10
    1 3 1 3 3 2 4 1 5 2
    
    예상 출력
    YES
    3313332121
    
  2. 예제 2

    입력
    3
    1 2 2
    
    예상 출력
    NO