11796. Роздати хліб


Відправити розв'язок

Бали: 100
Time limit: 2.0s
Memory limit: 500M

Author:
Problem type
Allowed languages
C++, Java, Pascal, Python

У нас є буханець хліба довжиною \(L\), який ми наріжемо і роздамо \(N\) дітям. \(i\)-та дитина (\(1 \leq i \leq N)\) хоче скибку довжиною \(A_i\).

Степан повторить описану нижче операцію, щоб розрізати буханець на відрізки \(A_1, A_2, \ldots, A_N\).

  • Вибрати буханець довжини \(k\) і ціле число \(x\) від 1 до \(k-1\) (включно). Розрізати його на дві частини довжиною \(x\) і \(k-x\). Ця операція має вартість \(k\) незалежно від значення \(x\).

Кожна дитина \(i\) повинна отримати буханку довжиною рівно \(A_i\), але допускається залишити частину буханки нерозданою.

Знайдіть мінімальну суму, необхідну для того, щоб роздати хліб всім дітям.

Обмеження

  • \(2 \leq N \leq 2\times 10^5\)
  • \(1\leq A_i \leq 10^9\)
  • \(A_1+A_2+ \cdots +A_N \leq L \leq 10^{15}\)
  • Усі значення у вхідних даних є цілими числами.

Формат вхідних даних

Перший рядок містить цілі числа \(N, L\)

Наступний  рядок містить \(N\) цілих чисел \(A_i\)

Числа у рядках розділяються пропуском.

Формат вихідних даних

У вихідний потік виведіть шукану мінімальну вартість.

Примітка

До прикладу 1:

Степан може нарізати буханець наступним чином.

  • Виберіть буханець довжиною 7 і x=3, розріжте його на буханці довжиною 3 і 4 вартістю 7.
  • Виберіть буханець довжиною 3 і x=1, розріжте його на буханці довжиною 1 і 2 вартістю 3. Перший віддайте 1-й дитині.
  • Виберіть буханку довжиною 2 і х=1, розріжте її на дві буханки довжиною 1 вартістю 2. Роздайте їх 3-й і 5-й дитині.
  • Оберіть буханець довжиною 4 і х=2, розріжте його на дві буханці довжиною 2 вартістю 4. Роздайте їх 2-й та 4-й дітині.

Вартість 7+3+2+4=16 є мінімальна. Залишків хліба не буде.

Приклад вхідних даних

5 7
1 2 1 2 1

Приклад вихідних даних

16

Приклад вхідних даних

3 1000000000000000
1000000000 1000000000 1000000000

Приклад вихідних даних

1000005000000000

Коментарі

Ще немає коментарів.