C. Раскраска кубиков
Ограничения: время – 2s/4s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод 
Послать решение Blockly Посылки Темы Где Обсудить (2)
На день рождения Пете подарили коробку кубиков. На каждом кубике написано некоторое целое число. Петя выложил все n своих кубиков в ряд, так что числа на кубиках оказались расположены в некотором порядке a1, a2, …, an.
Теперь он хочет раскрасить кубики в разные цвета таким образом, чтобы для каждого цвета последовательность чисел на кубиках этого цвета была строго возрастающей. То есть, если кубики с номерами i1, i2, …, ik покрашены в один цвет, то ai1 < ai2 < … < aik.
Петя хочет использовать как можно меньше цветов. Помогите ему!
Первая строка входного файла содержит число n – количество кубиков у Пети (1 ≤ n ≤ 250000). Затем следует n чисел, разделенных пробелами и/или переводами строки – a1, a2, …, an.
На первой строке выходного файла выведите число L – наименьшее количество цветов, которое потребуется Пете. На следующей строке выведите n чисел из диапазона от 1 до L – цвета, в которые Петя должен покрасить кубики.
Пример вывода
2
1 1 1 2 2
Источник: http://neerc.ifmo.ru/school/archive/