Triangeltal
시간 제한5초메모리 제한1024 MB
N명의 학생을 세 개의 비어 있지 않은 모둠으로 나누어, 각 학생이 속한 모둠의 다음 모둠 인원이 A_i명 이상이 되도록 하거나 불가능함을 판정한다.
문제
I en klass med 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 kommer sedan presentera för grupp , grupp för grupp , och grupp för grupp .
Något som krånglar till den här gruppindelningen är att eleverna har olika ambitionsnivå. Varje elev kräver att få hålla tal inför minst personer. Så om elev nummer exempelvis hamnar i grupp , så måste grupp ha minst medlemmar för att elev ska bli nöjd.

Bilden motsvarar första exemplet.
Du får givet de talen , 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 (), antalet elever i klassen.
Den andra raden innehåller heltal (), där är antalet elever den :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 bestående av tecknen , och . Tecknet på plats i denna sträng indikerar vilken grupp elev hamnade i. Om det finns flera lösningar kan du skriva ut vilken som helst.