Олимпиадный тренинг

Задача . E. Жадный выбор


Задача

Темы: Конструктив *2600

Вася занимается исследованием применения жадных алгоритмов в различных областях. Сейчас он пытается изучить применимость жадного алгоритма для задачи о сдаче. Имеется набор из n различных номиналов монет, причем монет каждого номинала имеется неограниченное количество. Задача состоит в том, чтобы набрать сумму x наименьшим числом монет. Жадный алгоритм на каждом шаге берет монету наибольшего номинала, не превосходящего x. Очевидно, что если в наборе номиналов присутствует 1, то любую сумму x можно набрать жадным алгоритмом. Однако жадный алгоритм не всегда даст оптимальное представление данной суммы, т.е. представление, содержащее наименьшее количество монет. К примеру, если имеются номиналы {1, 3, 4} и требуется набрать сумму 6, то жадный алгоритм построит представление 4 + 1 + 1, в то время как оптимальным является представление 3 + 3, содержащее на монету меньше. По заданному набору номиналов определите, существует ли такая сумма x, которую жадный алгоритм наберет неоптимальным способом. Если такая сумма существует, то найдите наименьшую из таких сумм.

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

Первая строка содержит целое число n (1 ≤ n ≤ 400) — число номиналов монет. Вторая строка содержит n целых чисел ai (1 ≤ ai ≤ 109), задающих номиналы монет. Гарантируется, что a1 > a2 > ... > an и an = 1.

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

Если жадный алгоритм набирает любую сумму оптимальным образом, то выведите -1. Иначе выведите наименьшее число, которое жадный алгоритм наберет неоптимальным способом.


Примеры
Входные данныеВыходные данные
1 5
25 10 5 2 1
-1
2 3
4 3 1
6

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя