Городские пропуска

Просмотр в формате PDF

Submit solution


Очки: 150
Ограничение по времени: 1.0s
Ограничение по памяти: 64M

Автор:
Problem types
Allowed languages
C++, Python

В большом городе проходит серия мероприятий, и Дане нужно пользоваться общественным транспортом в некоторые заранее известные дни. Для поездок можно покупать специальные транспортные пропуска трёх видов:

  • пропуск на 1 день;
  • пропуск на 7 дней;
  • пропуск на 30 дней.

Если пропуск куплен в день d, то он начинает действовать сразу в этот день. Например:

  • пропуск на 1 день покрывает только день d;
  • пропуск на 7 дней покрывает все дни от d до d + 6;
  • пропуск на 30 дней покрывает все дни от d до d + 29.

Известны все дни, в которые Дане точно нужно ехать, а также стоимости трёх видов пропусков. Требуется определить минимальную сумму, которую нужно потратить, чтобы покрыть все нужные дни поездок.

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

В первой строке записано одно целое число n — количество дней, в которые Дане нужны поездки.

Во второй строке записаны n различных целых чисел days[i] — номера дней, в которые нужно ехать. Гарантируется, что эти дни заданы в строго возрастающем порядке.

В третьей строке записаны три целых числа:

  • c1 — стоимость пропуска на 1 день,
  • c7 — стоимость пропуска на 7 дней,
  • c30 — стоимость пропуска на 30 дней.

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

Выведите одно целое число — минимальную стоимость, достаточную для покрытия всех нужных дней поездок.

Ограничения

  • 1 <= n <= 365
  • 1 <= days[i] <= 365
  • days[i] < days[i + 1]
  • 1 <= c1, c7, c30 <= 1000

Пример 1

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

6
1 4 6 7 8 20
2 7 15

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

11

Пример 2

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

12
1 2 3 4 5 6 7 8 9 10 30 31
2 7 15

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

17

Пояснение

В первом примере можно:

  • купить пропуск на 1 день для дня 1 за 2,
  • купить пропуск на 7 дней начиная с дня 4 за 7,
  • купить пропуск на 1 день для дня 20 за 2.

Итоговая стоимость равна 2 + 7 + 2 = 11.


Комментарии

Еще нет ни одного комментария.