Задача DSP2

Колоди потрібно розпиляти поперек на шматки потрібної довжини. Вартість розпилу залежить від початкової довжини колоди. Наприклад колоду довжиною 10 метрів потрібно розпилити на відстані 2, 4, та 7 м, рахуючи від одного кінця. Це вдасться зробити кількома способами. Можна розрізати на поділці 2 м, потім - 4 і потім 7 м, це призведе до вартості 10+8+6=24 (спочатку колода мала довжину 10 м, після першого розпилу - 8 м, після другого 6 м). Однак можна розпилювати по-іншому - спочатку на поділці 4 м, потім - 2 м і потім 7 м. Це призведе до вартості 10+4+6=20, що, звісно, дешевше. Напишіть програму, яка визначає мінімальну вартість розпилу для будь-якої колоди заданої довжини.

Технічні умови. Програма зчитує з клавіатури ціле додатне число L<1000 - початкову довжину колоди, далі - число N<50 - кількість розпилів, які потрібно зробити, далі - N цілих додатних чисел, Ci(0<Ci<L), що задають місця, в яких потрібно зробити розпили в суворо зростаючому порядку. Програма виводить на екран мінімальну вартість розпилу даної колоди.

Приклад.

Введення> 100 3 25 50 75
Виведення> 200


Задача DSP2

Бревна нужно распилить поперек на куски нужной длины. Стоимость распиловки зависит от начальной длинны бревна. Например, бревно длиной 10 метров нужно распилить на расстоянии 2, 4 и 7 м, считая от одного конца. Это можно сделать несколькими способами. Можно распилить на отметке 2 м,потом - 4 и потом 7 м, это приведет к стоимости 10+8+6=24 ( сначала бревно имело длину 10 м, после первого распила - 8 м, после второго - 6 м). Однако можно пилить и иначе - сначала на отметке 4 м,потом - 2 и затем 7 м. Это приведет к стоимости 10+4+6=20, что, естественно, дешевле. Напишите программу, которая определяет минимальную стоимость распиловки для любого бревна указанной длины.

Технические условия. Программа считывает с клавиатуры целое положительное число L<1000 - начальную длину бревна, далее- число N<50 - количество распилов, которые нужно сделать, далее - N целых положительных чисел Cі(0<Ci<L), задающие места, в которых нужно сделать распилы в строго возрастающем порядке. Программа выводит на экран минимальную стоимость распиловки данного бревна.

Пример.

Ввод> 100 3 25 50 75
Вывод> 200

© LIKT 1998-2018