Вопрос задан 26.10.2026 в 18:38. Предмет Информатика. Спрашивает Пономарев Сергей.

B. Цена за мороженое
Ограничение по времени на тест: 1 секунда
Ограничение по памяти на тест: 256 мегабайт
Ввод: стандартный ввод
Вывод: стандартный вывод
Вы продаёте мороженое. Себестоимость одного мороженого k тенге. Это значит, что если вы продаёте одно мороженое по x тенге, то прибыль с одного мороженого будет x − k тенге.

Есть n клиентов, для каждого клиента i известна максимальная сумма денег sᵢ тенге, которую он готов потратить на мороженое. Каждый клиент купит столько мороженого, сколько сможет купить. Выберите цену мороженого таким образом, чтобы максимизировать суммарную прибыль.

Входные данные
В первой строке находятся два целых числа n, k (1 ≤ n ≤ 2⋅10⁵, 0 ≤ k ≤ 10⁶) — количество клиентов и себестоимость одного мороженого.

Во второй строке находятся n целых чисел s₁, s₂, ..., sₙ (1 ≤ sᵢ ≤ 10⁶).

Выходные данные
Выведите максимальную возможную прибыль.
В первом примере одно мороженое выгодно продавать по 7 тенге. Тогда четвёртый клиент купит 2 мороженых, а остальные 4 по одному. Всего продадим 6 мороженых. Прибыль с одного мороженого 5 (7 − 2) тенге, тогда суммарная прибыль 6 ⋅ 5 = 30 тенге.

Перейти к ответам

Ответы на вопрос

Отвечает Надольский Тимур.

Для каждой возможной цены \(x\) нужно найти число купленных мороженых:

\[q(x)=\sum_{i=1}^{n}\left\lfloor\frac{s_i}{x}\right\rfloor.\]

Тогда прибыль равна:

\[P(x)=(x-k)\cdot q(x).\]

Проверять имеет смысл цены от \(k+1\) до наибольшего значения \(s_i\). Чтобы решение работало быстро, составляют массив частот сумм \(s_i\) и его префиксные суммы. Для каждой цены \(x\) клиентов группируют по отрезкам: от \(x\) до \(2x-1\), от \(2x\) до \(3x-1\) и так далее. На каждом отрезке все покупатели приобретают одинаковое число мороженых. Максимальное найденное значение \(P(x)\) и будет ответом.

Для хранения прибыли нужен тип \(Int64\), так как ответ может быть больше диапазона обычного целого типа.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос