Ответ:
Решение:
Задача сводится к минимизации затрат на покупку N мегабайт интернет-трафика, учитывая возможность покупки пакетов и оплаты по тарифу «1 рубль за мегабайт».
Предлагаются два варианта пакетов:
- Пакет на A мегабайт за B рублей.
- Пакет на C мегабайт за D рублей.
Также есть возможность оплачивать трафик по тарифу 1 рубль за мегабайт.
Гарантируется, что A > B и C > D, что означает, что покупка пакетов выгоднее, чем оплата по тарифу за каждый мегабайт в отдельности, если покупать полный пакет.
Для определения минимальной суммы необходимо рассмотреть все возможные комбинации покупки пакетов и оплаты по тарифу «1 рубль за мегабайт».
Пример 1:
Ввод: N=35, A=10, B=9, C=20, D=17
Анализ:
- Тариф «1 рубль за мегабайт»: 35 Мб * 1 руб/Мб = 35 рублей.
- Пакет 1 (10 Мб за 9 руб) + Тариф (25 Мб за 25 руб) = 9 + 25 = 34 рубля.
- Пакет 2 (20 Мб за 17 руб) + Тариф (15 Мб за 15 руб) = 17 + 15 = 32 рубля.
- Два пакета 1 (20 Мб за 18 руб) + Тариф (15 Мб за 15 руб) = 18 + 15 = 33 рубля.
- Пакет 1 (10 Мб за 9 руб) + Пакет 2 (20 Мб за 17 руб) + Тариф (5 Мб за 5 руб) = 9 + 17 + 5 = 31 рубль.
- Два пакета 2 (40 Мб за 34 руб) – избыток, но может быть дешевле. 40 Мб > 35 Мб, стоимость = 34 рубля.
Минимальная сумма – 31 рубль.
Пример 2:
Ввод: N=55, A=30, B=20, C=20, D=16
Анализ:
- Тариф «1 рубль за мегабайт»: 55 Мб * 1 руб/Мб = 55 рублей.
- Пакет 1 (30 Мб за 20 руб) + Тариф (25 Мб за 25 руб) = 20 + 25 = 45 рублей.
- Пакет 2 (20 Мб за 16 руб) + Тариф (35 Мб за 35 руб) = 16 + 35 = 51 рубль.
- Два пакета 1 (60 Мб за 40 руб) – избыток, но может быть дешевле. 60 Мб > 55 Мб, стоимость = 40 рублей.
- Пакет 1 (30 Мб за 20 руб) + Пакет 2 (20 Мб за 16 руб) + Тариф (5 Мб за 5 руб) = 20 + 16 + 5 = 41 рубль.
- Два пакета 2 (40 Мб за 32 руб) + Тариф (15 Мб за 15 руб) = 32 + 15 = 47 рублей.
- Три пакета 1 (90 Мб за 60 руб) – избыток, стоимость 60 руб.
- Пакет 1 (30 Мб за 20 руб) + Пакет 1 (30 Мб за 20 руб) = 60 Мб за 40 руб.
Минимальная сумма – 40 рублей.
Алгоритм:
Для каждого возможного количества пакетов первого типа (от 0 до N/A) и второго типа (от 0 до N/C) нужно рассчитать общую стоимость. Также необходимо учесть, что пакеты могут быть куплены в избытке, если это дешевле. Минимальная стоимость получается из сравнения:
- Покупки N мегабайт по тарифу «1 рубль за мегабайт».
- Покупки пакетов так, чтобы суммарный объём трафика был не менее N мегабайт, и минимизировать стоимость.
Сложность задачи в том, что пакеты можно комбинировать, и выгоднее может оказаться покупка большего объёма трафика, чем требуется, если это удешевляет общую стоимость.
Минимальная сумма будет определяться как минимум из:
- N (оплата по тарифу «1 рубль за мегабайт»).
- i * B + j * D + max(0, N - i*A - j*C), где i и j — количество купленных пакетов первого и второго типа соответственно, и мы перебираем все i и j такие, что i*A + j*C >= N (включая случаи, когда i*A + j*C > N, и мы оплачиваем только N, если это дешевле, что упрощается до i*B + j*D, если i*A + j*C >= N).
Также нужно рассмотреть случаи, когда куплено i пакетов типа A и j пакетов типа C, и их суммарный объём i*A + j*C превышает N, но стоимость i*B + j*D меньше, чем N.
Ответ: 31 (для первого примера), 40 (для второго примера).
