Емблема центру  www.olymp.vinnica.ua     netoi.org.ua
Центр олімпіад школярів в Iнтернеті
Likt-PMG17
м.Вiнниця


Годинник
 
DSP2

Задача 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


© Всеукраїнський віртуальний центр олімпіад школярів "ОЛІМП"