EduBrick

O. Сколько дубов придётся срубить

2000 мс · 256 МБ · всё или ничего

Как классная задача про дубы, но выводить надо только количество срубленных деревьев (или −1-1), без самого плана.

Обе динамики нужны целиком: и проверка достижимости can[i][j]can[i][j], и подбор оставляемых дубов. Отпадает только восстановление порядка.

Это хороший способ отделить «я понял задачу» от «я справился с выводом»: если у вас не сходится классная задача, начните с этой и убедитесь, что хотя бы количество считается верно.

Напомним главное: недостаточно взять наибольшую неубывающую подпоследовательность с сохранёнными краями. Проверьте своё решение на высотах 2 2 2 1 1 1 2 - там ответ не 3, а −1-1.

Формат ввода

В первой строке - число nn (2≤n≤2002 \le n \le 200).

Во второй строке - nn высот, целых положительных чисел, не превосходящих 1000.

Формат вывода

Одно число - наименьшее количество срубаемых дубов, или −1-1, если это невозможно.

Примеры

ввод
5
3 2 4 8 5
вывод
2
ввод
7
2 2 2 1 1 1 2
вывод
-1
Войдите, чтобы отправлять решения.