Language:

English
Russian

Практикум по программированию

Для участников:
Регистрация  ||   Вход
Список соревнований
Вы не вошли в систему! Вход или регистрация.

Игра с фишками.

Time limit:1 sec.
Memory limit: 128000 KByte

Однажды на факультативе по математике Вася научился играть в одну интересную математическую игру. Имеется набор фишек, на каждой фишке написана её стоимость. Вначале игроку выдаётся какая-то из фишек из этого набора (ходом это не считается). Далее на каждом ходе игрок может забрать себе любую фишку из оставшихся при условии, что её стоимость меньше суммарной стоимости уже имеющихся у него фишек. Цель игры – забрать фишку с максимальной стоимостью, сделав для этого наименьшее число ходов.

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

В первой строке входных данных записано целое число N – количество фишек  (2 ≤ N ≤ 30000).  В следующей строке через пробел записаны N целых чисел Сi – стоимости фишек (1 ≤ Сi ≤ 10 000). В третьей строке записан номер фишки M, которую выдали игроку (1 ≤ M N).

Выведите одно число K – минимальное количество ходов, за которое можно забрать фишку с максимальной стоимостью. Если выиграть невозможно, выведите -1. Если же фишка с максимальной стоимостью сразу была выдана игроку, выведите 0.

 

Пример ввода 1

5

20 50 40 100 50

2

Пример вывода 1

3

Пример ввода 2

5

20 50 40 100 50

1

Пример вывода 2

-1

Пример ввода 3

2

20 10

1

Пример вывода 2

0

 

Примечание: набор тестов расширен по сравнению с теми, что были на олимпиаде (спасибо Олегу Стрекаловскому).

© Copyright ВоГУ, АВТ, Носов Д.А., Смоленцев К.Н.