EduBrick

M. Оптимальное бинарное дерево поиска

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

Даны nn различных элементов в возрастающем порядке и частоты обращений к ним f1,…,fnf_1, \ldots, f_n. Стоимость доступа к элементу - количество рёбер на пути от корня до него. Общая стоимость дерева - сумма fi⋅cost(ei)f_i \cdot \mathrm{cost}(e_i).

Найдите наименьшую возможную стоимость.

Обратите внимание: дерево должно быть деревом поиска, то есть порядок элементов задан жёстко. Просто положить самый частый элемент в корень нельзя - от этого зависит, какие элементы попадут налево, а какие направо.

Формат ввода

Каждая строка - отдельный тест: сначала число nn (1≤n≤2501 \le n \le 250), затем nn чисел f(ei)f(e_i) (0≤f(ei)≤1000 \le f(e_i) \le 100).

Сумма nn по всем тестам не превосходит 5000. Читать надо до конца файла.

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

Для каждого теста в отдельной строке выведите стоимость оптимального дерева поиска.

Примеры

ввод
1 5
3 10 10 10
3 5 10 20
вывод
0
20
20
ввод
1 0
вывод
0
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.