контест на +100, перебор не принимается.
(либо строго докажите, что без перебора это невозможно)
есть условно бесконечное (достаточное) количество блоков, каждый из которых разбит на 3 подблока, их называем остатками.
мы можем повышать остаток n раз и понижать k раз. За повышения и понижения на определенные остатки даются условные очки. Цель - получить их максимальное количество.
повышения остатка
(слева старый, справа новый, после равно - сколько дали очков)
0->1 = 0
1->2 = +4
2->0 = 0
понижения остатка
1->0 = +3
2->1 = -2
0->2 = +3
на остатке 3 он обнуляется, а на -1 он равен 2
вот пример
есть 3 повышения и 3 понижения
++-+--
остаток 0
+ остаток 1, +0 очков
+ остаток 2. +4 очка
- остаток 1. -2 очка
+ остаток 2. +4 очка
- остаток 1. -2 очка
- остаток 0. +3 очка
7 очков в итоге
нужно составить так, чтобы было максимальное количество очков