C. Разбиение на рекламные блоки
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Уже не первый год в Байтландии идёт тяжелая борьба за быструю отрисовку страниц в интернете...

Одним из шагов к победе стало нововведение Баннерной крутилки: отдавать баннеры для нескольких блоков в одном ответе, тем самым сохранив дополнительные вызовы, а с ними и время. Однако оказалось, что совсем непросто разумно разбить полученные баннеры по блокам.

Имеется $$$N$$$ баннеров, которые мы хотим разбить на $$$K$$$ блоков. В ответе есть массив $$$P$$$, где $$$P_i$$$ — прогнозируемая польза от показа $$$i$$$-го баннера, а также массив $$$L$$$, где $$$L_{j}$$$ — возможная потеря внимания пользователя на $$$j$$$-й по счёту блок.

Аналитик Виталик тестирует гипотезы, которые должны в первую очередь повысить счастье пользователя. Сейчас он прорабатывает следующую метрику: для блока вводим функцию $$$f(Block_{s}) = P_{min} \cdot len(Block_{s}) - L_{s} P_{max}$$$, где $$$P_{min}$$$ — минимальное значение $$$P$$$ среди баннеров в блоке, $$$P_{max}$$$ — максимальное, $$$len(Block_{s})$$$ — количество баннеров в блоке, $$$s$$$ — номер блока в разбиении. Значением метрики для конкретного разбиения является сумма значений $$$f$$$ для всех блоков в этом разбиении. На каждом запросе необходимо находить разбиение, которое максимизирует эту метрику.

Виталик умеет решать эту задачу, но его алгоритм оказался не очень быстрым. Вас, как эксперта, попросили помочь ему и ускорить отбор!

Входные данные

Первая строка входных данных содержит 2 целых числа $$$N$$$ и $$$K$$$ ($$$1 \leq N \leq 5 \cdot 10^4$$$, $$$1 \leq K \leq \min(100, N)$$$).

Вторая стока содержит $$$N$$$ целых чисел $$$1 \leq P_{i} \leq 10^6$$$; гарантируется, что $$$P_{i} \gt P_{i + 1}$$$.

Третья строка содержит $$$K$$$ целых чисел $$$0 \leq L_{i} \leq 10^6$$$.

Выходные данные

Выведите одно целое число — значение метрики для наилучшего разбиения.

Примеры
Входные данные
4 2
6 4 3 1
0 3
Выходные данные
7
Входные данные
10 3
10 9 8 7 6 5 4 3 2 1
0 4 2
Выходные данные
19
Примечание

В первом примере возможны три разбиения:

  • $$$(6) | (4\,3\,1)$$$, со значением метрики $$$-3$$$;
  • $$$(6\,4) | (3\,1)$$$, со значением метрики $$$1$$$;
  • $$$(6\,4\,3) | (1)$$$, со значением метрики $$$7$$$.