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.