Тимофей и подготовка к ЧеРеКОШу

Решение задачи состоит из двух замечаний:

  1. Если среди всех $$$a_i$$$ существует такое, что: $$$2a_i > \sum\limits_{i = 1}^n a_i + 1$$$, то мы не сможем составить строку.

    Доказательство:

    Пусть $$$a_i = x$$$, а все остальные $$$a_i$$$ в сумме дают $$$y$$$. Нам известно, что $$$2x > y + x + 1$$$, то есть $$$x - 1 > y$$$. Чтобы разделить все $$$x$$$ цифр $$$i$$$, нужно хотя бы $$$x - 1$$$ других цифр, а у нас их строго меньше.

    В ином случае по тем же соображениям мы сможем составить строку так, чтобы разделить одинаковые цифры.

  2. Чтобы минимизировать число, нужно в каждый момент времени ставить минимальную цифру, которую можем сейчас поставить. Если мы поставим не минимальную цифру, то это гарантированно ухудшит ответ, а количество разделителей, которые нам могут понадобиться для разделения каких-то цифр, в любом случае уменьшится на 1.

Реализация:

Мы будем строить ответ поэлементно, в каждый момент времени у нас будет готов какой-то префикс ответа.

Во время построения поддерживаем $$$last$$$ — последнюю цифру числа (изначально $$$last = 0$$$, так как число не может начинаться с нуля). Когда хотим поставить очередную цифру, делаем следующее:

  1. Если есть такое $$$i$$$, что $$$2a_i = \sum\limits_{i = 1}^n a_i + 1$$$, то, если можем, ставим эту цифру прямо сейчас, так как если мы поставим её на следующей итерации, то по доказанному, у нас получится некорректная строка.
  2. Если первый пункт не реализовался, то ставим минимальную цифру, которую можем.
  3. Если мы не можем поставить ни одну цифру, то завершаем процесс.

Если в итоге мы расставили не все цифры, то такого числа не существует.

Также отдельно нужно обработать случай, когда число равно $$$0$$$.