Анализ на задача grader67
Преди да разгледаме решенията на подзадачите, нека докажем следното твърдение: "Проверката за точките на една редица се проверява за О(N) при наличие на най-оптималната редица с N елемента"
Доказателство: Ако имаме най-оптималната редица, единственото нещо от нея което ни трябва е разликата на максималния и минималният елемент. 
Дали има поне два различни елемента в една редица и да намерим сумата на числата в редица са съвсем интуитивни и познати неща, които правим лесно за O(N).
С това доказателство променяме задачата: "Намерете разликата на максималният и минималният елемент в най-оптималната редица с N елемента".
Минаваме към решенията:

Първа подзадача: N<=6,7
Това решение позволява да използваме методът на "грубата сила". 
Разглеждаме всички възможни редици от числа и намираме тази с най-малка разлика на максималния и минималният елемент. Това ни е достатъчно да решим подзадачата.

Втора подзадача: N<=30
Тези ограничения биха ни ориентирали към решение N^4. Тук започва първата съществена стъпка към решението на задачата: Да направим dp.
Как биха изглеждали стейтовете на това dp? Едно примерно dp би било със стейтове {до кой елемент сме}{сумата досега mod n}{разлика на елементи}{имаме ли поне две различни числа}
и всеки елемент в него е pair и съдържа най-голямото и най-малкото число досега в оптималната редица до този елемент. Преходът е интуитивен и не мисля, че има нужда от обяснение.
Само да изясним защо сложността е N^4. Освен обикалянето на всички елементи се изисква още едно фиксиране на текущия елемент.

Трета подзадача: N<=100
Можем да оптимизираме решението от миналата подзадача. Не ни е нужно да поддържаме разликата на елементите. Тя е просто разликата на двата елемента в стойността на всеки елемент.
Така махаме един ненужен цикъл и сложността пада до N^3.

Четвърта подзадача: N<=1067
Тази подзадача няма фиксирано решение.

Пета подзадача: N<=1e5+67
Реално тук е същинската идея на задачата. Нека докажем следното грандиозно наблюдение:
За всяко N най-оптималната редица винаги има разлика на максималният и минималният елемент 2.
Ако сте изследвали отговорите от някои от миналите dp-та, или дори си направите редиците с backtracking, вие може да направите това наблюдение не прекалено трудно. Нека го докажем по един простичък начин:
Нека имаме редица от N единици (като цяло няма значение, може да е всяко число). Това според първото условие не е валидна редица. Ако искаме да я направим валидна, можем да добавим 1 към някоя единица и да извадим едно от друга единица. 
Така си гарантираме минимална разлика, защото няма как да намалим само едно число с едно или да увеличим само едно число с едно, защото се променя сумата. Интуитивно е, че можете да приложите тази идея за всяко N.

Изводи: Задачата на пръв поглед изглежда като класическо dp, но втория поглед разкирва алчността на пълното решение, което първоначално не беше предвидено и от авторите.

Автор и решения: Димитър Шапатов
Анализ и решения: Кирил Зашев
