Олимпиадный тренинг

Задача . E. Очистите мультимножество


У вас есть мультимножество, содержащее несколько чисел. Изначально оно содержит \(a_1\) элементов равных \(1\), \(a_2\) элементов равных \(2\), ..., \(a_n\) элементов равных \(n\).

Вы можете применять два типа операций:

  • выбрать два числа \(l\) и \(r\) (\(l \le r\)), а затем удалить один элемент, равный \(l\), один элемент, равный \(l + 1\), ..., и один элемент, равный \(r\) из мультимножества. Эта операция может быть применена, только если каждый элемент от \(l\) до \(r\) встречается хотя бы раз в мультимножестве;
  • выбрать два числа \(i\) и \(x\) (\(x \ge 1\)), а затем удалить \(x\) элементов равных \(i\) из мультимножества. Эта операция может быть применена, только если в мультимножестве есть как минимум \(x\) элементов, равных \(i\).

За какое наименьшее количество операций можно удалить все элементы из мультимножества?

Входные данные

Первая строка содержит целое число \(n\) (\(1 \le n \le 5000\)).

Вторая строка содержит \(n\) чисел \(a_1\), \(a_2\), ..., \(a_n\) (\(0 \le a_i \le 10^9\)).

Выходные данные

Выведите одно число — наименьшее количество операций, за которое можно удалить все элементы из мультимножества.


Примеры
Входные данныеВыходные данные
1 4
1 4 1 1
2
2 5
1 0 1 0 1
3

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя