Пакетна обробка завдань#4144

Пакетна обробка завдань

0,1 секунди
256 мегабайтів
Дуже легка

Є послідовність з робіт, які потрібно обробити на одній машині. Роботи пронумеровані від до , тобто послідовність виглядає як 1, 2, \ldots, N. Послідовність робіт потрібно розбити на одну або більше партій, причому кожна партія складається з послідовних робіт у цій послідовності.

Обробка починається у момент часу . Партії обробляються одна за одною, починаючи з першої. Якщо партія містить роботи з меншими номерами, ніж партія , то партія виконується раніше за партію . Роботи у кожній партії обробляються на машині послідовно. Одразу після того, як усі роботи у партії оброблено, машина видає результати всіх робіт цієї партії. Час виведення для роботи — це момент, коли партія, що містить , завершується.

Для кожної партії потрібен час на переналаштування машини . Для кожної роботи відомі коефіцієнт вартості F_i та час обробки T_i. Якщо партія містить роботи x, x+1, \ldots, x+k й починається у момент часу , то час виведення для кожної роботи цієї партії дорівнює

t + S + (T_x + T_{x+1} + \ldots + T_{x+k})

Зверніть увагу, що результати всіх робіт у партії видаються машиною одночасно. Якщо час виведення для роботи — O_i, то її вартість складає O_i \times F_i.

Наприклад, нехай маємо робіт, час налаштування S = 1, (T_1, T_2, T_3, T_4, T_5) = (1, 3, 4, 2, 1), а (F_1, F_2, F_3, F_4, F_5) = (3, 2, 3, 3, 4).

Якщо розбити роботи на три партії: \{1, 2\}, \{3\}, \{4, 5\}, то часи виведення становлять (O_1, O_2, O_3, O_4, O_5) = (5, 5, 10, 14, 14), а вартості робіт — (15, 10, 30, 42, 56) відповідно. Загальна вартість для такого розбиття — .

Потрібно написати програму, яка для заданого часу переналаштування партії та послідовності робіт з відомими часами обробки і коефіцієнтами вартості знаходить мінімальну можливу загальну вартість.

Вхідні дані

Ваша програма читає зі стандартного введення.

  • Перший рядок містить число робіт , 1 \leq N \leq 10000.

  • Другий рядок містить час налаштування партії (0 \leq S \leq 50).

  • Наступні рядків містять інформацію про роботи 1, 2, \ldots, N у такому порядку. У кожному з цих рядків:

    • Ціле число T_i (1 \leq T_i \leq 100) — час обробки -ї роботи.

    • Ціле число F_i (1 \leq F_i \leq 100) — коефіцієнт вартості -ї роботи.

Вихідні дані

Ваша програма повинна вивести у стандартний вивід один рядок з єдиним цілим числом — мінімально можливою загальною вартістю.

Приклади

Приклад 1

Loading
Loading