Автор: Андрій Холод
Роздробник: Андрій Холод
Розбір підготовано: Костянтин Денисов
Нехай M=\max(a_1,\dots,a_n).
За одну операцію будь-який елемент зменшується не більше ніж на , тому елемент зі значенням потребує щонайменше операцій. З іншого боку, рівно за операцій занулити масив завжди можна: кожного разу беремо другу операцію з найлівішого індексу, де a_i>0. Тоді поточний максимум зменшується на на кожному кроці, отже через кроків стане , а раз максимум , то всі елементи теж . Тому мінімальна кількість операцій (без вимоги про непарність) дорівнює .
Тепер потрібна непарна кількість операцій.
Якщо n=1, то кількість операцій завжди рівно (бо зменшувати можна тільки цей єдиний елемент). Тому відповідь існує тоді і тільки тоді, коли непарне; у цьому випадку мінімум .
Якщо n>1:
якщо непарне, то вже підходить відповідь ;
якщо парне, то робимо одну зайву першу операцію на будь-якому елементі, який не є тим єдиним елементом з максимумом (тобто зменшуємо не «вирішальний» максимум), після чого все одно можна занулити масив за операцій. Отже мінімальна непарна відповідь дорівнює M+1.
Отже алгоритм простий: знайти . Якщо n=1, відповідаємо YES і лише коли непарне, інакше NO. Якщо n>1, завжди YES, а відповідь дорівнює , якщо непарне, і M+1, якщо парне.
Складність. Один прохід по масиву, часу та пам'яті.