eolymp
bolt
Попробуйте наш новый интерфейс для отправки задач
Задачи

Пакетная обработка заданий

Пакетная обработка заданий

Имеется последовательность \textbf{N} заданий, предназначенных для выполнения на одной машине. Задания пронумерованы от \textbf{1} до \textbf{N} следующим образом \textbf{1}, \textbf{2}, …, \textbf{N}. Задания должны быть так сгруппированы в один или несколько пакетов, чтобы каждый пакет состоял из следующих друг за другом заданий исходной последовательности. Выполнение первого задания начинается в момент времени \textbf{0}. Пакеты обрабатываются один за другим, начиная с первого, следующим образом. Если пакет \textbf{b} содержит задания с меньшими номерами, чем пакет \textbf{c}, то пакет \textbf{b }поступает на обработку раньше пакета \textbf{c}. Задания каждого пакета выполняются на машине последовательно. Сразу же после того, как все задания пакета выполнены, машина выводит результаты выполнения всех заданий этого пакета. Время завершения выполнения \textbf{j}-го задания определяется временем завершения обработки всего пакета, содержащего \textbf{j}-ое задание. Чтобы подготовить машину к обработке каждого пакета, необходимо время \textbf{S}, которое назовем подготовительным. Для каждого \textbf{i}-го задания известен стоимостный коэффициент \textbf{F_i} и время \textbf{T_i}, необходимое для выполнения этого задания. Если пакет состоит из заданий \textbf{x}, \textbf{x+1}, … , \textbf{x+k} и поступает на обработку в момент времени \textbf{t}, то время завершения выполнения каждого задания пакета рассчитывается по формуле \textbf{t + S + (Tx + Tx+1 + … + Tx+k)}. Заметим, что машина выводит результаты всех заданий пакета в один и тот же момент времени. Если время завершения выполнения \textbf{i}-го задания - \textbf{O_i}, то стоимость выполнения этого задания составит \textbf{O_i}×\textbf{F_i}. Пусть имеется \textbf{5 }заданий и известно: \textbf{S = 1};\textbf{ (T_1, T_2, T_3, T_4, T_5) = (1, 3, 4, 2, 1)}; \textbf{(F_1, F_2, F_3, F_4, F_5) = (3, 2, 3, 3, 4)}. Если задания сгруппированы в три пакета \textbf{\{1, 2\}}, \textbf{\{3\}}, \textbf{\{4, 5\}}, то можно вычислить время завершения выполнения для них \textbf{(O_1, O_2, O_3, O_4, O_5) = (5, 5, 10, 14, 14)} и стоимости выполнения заданий \textbf{(15, 10, 30, 42, 56)}, соответственно. Общая стоимость выполнения сгруппированных в пакеты заданий определяется как сумма стоимостей выполнения каждого задания. Таким образом, общая стоимость выполнения всех заданий для предложенного примера будет равна \textbf{153}. Вам задана величина подготовительного времени \textbf{S} и последовательность \textbf{N} заданий, для каждого из которых определено время выполнения и стоимостный коэффициент. Требуется написать программу, которая вычисляет минимально возможную общую стоимость выполнения последовательности \textbf{N} заданий. \InputFile Ваша программа должна читать данные со стандартного ввода. Первая строка содержит количество заданий \textbf{N} (\textbf{1 }≤ \textbf{N} ≤ \textbf{10000}). Вторая строка содержит подготовительное время \textbf{S}, которое является целым числом (\textbf{0} ≤ \textbf{S} ≤ \textbf{50}). Следующие \textbf{N} строк содержат информацию о заданиях \textbf{1}, \textbf{2}, …, \textbf{N} в указанном порядке. В каждой из этих строк первым задается целое число \textbf{T_i} (\textbf{1} ≤ \textbf{T_i} ≤ \textbf{100}) - время выполнения задания. За ним следует целое число \textbf{F_i} (\textbf{1} ≤ \textbf{i }≤ \textbf{100}) - стоимостный коэффициент задания. \OutputFile Ваша программа должна записать в стандартный вывод одну строку, содержащую одно целое число - минимальную общую стоимость выполнения последовательности \textbf{N} заданий.
Лимит времени 0.1 секунд
Лимит использования памяти 256 MiB
Входные данные #1
2
50
100 100
100 100
Выходные данные #1
45000

Объяснение: Для каждого теста общая стоимость любой группировки не превосходит 2^31 - 1.