Educational Codeforces Round 30 |
---|
Закончено |
На днях Алексей закончил проведение соревнования по программированию для студентов из Берляндии. n студентов приняли участие в соревновании, i-й решил ai задач. Теперь необходимо наградить некоторых участников. Алексей может вручать студентам дипломы трех степеней. Каждый студент или получит один диплом какой-либо степени, или не получит диплома совсем. Пусть cntx — количество студентов, награжденные дипломом степени x (1 ≤ x ≤ 3). Должны соблюдаться следующие условия:
Конечно, есть множество способов распределить дипломы. Пусть bi — степень диплома, который получит i-й студент (или - 1, если i-й студент останется без диплома). Также для любого x такого, что 1 ≤ x ≤ 3, пусть cx — максимальное количество задач, решенных студентом, получившим диплом степени x, а dx — минимальное количество задач, решенных студентом, получившим диплом степени x. Алексей хочет раздать дипломы таким образом, чтобы:
Помогите Алексею найти способ наградить участников!
В первой строке записано одно целое число n (3 ≤ n ≤ 3000).
Во второй строке записаны n целых чисел a1, a2, ..., an (1 ≤ ai ≤ 5000).
Выведите n чисел. i-е число должно равняться степени диплома, который получит i-й участник (или - 1, если он не получит никакого диплома).
Если существует несколько оптимальных решений, выведите любое из них. Гарантируется, что ответ всегда существует.
4
1 2 3 4
3 3 2 1
6
1 4 3 1 1 2
-1 1 2 -1 -1 3
Название |
---|