Выборы по системе runoff
Просмотр в формате PDFИзбирательная комиссия проводит подсчёт голосов на выборах, где используется система поэтапного выбывания кандидатов.
В выборах участвуют m кандидатов с различными именами. Проголосовали n избирателей. Каждый бюллетень содержит полный список из всех m кандидатов, упорядоченный по убыванию предпочтения избирателя.
Подсчёт ведётся по раундам:
- В текущем раунде каждый бюллетень засчитывается тому кандидату, который стоит в нём выше всех среди кандидатов, ещё не выбывших к этому моменту.
- Если какой-либо кандидат набрал строго больше половины от общего числа бюллетеней, то он объявляется избранным, и подсчёт заканчивается.
- Иначе комиссия исключает из дальнейшего подсчёта кандидата, получившего минимальное число голосов в этом раунде. Если таких кандидатов несколько, исключается кандидат с лексикографически наибольшим именем.
- Если в какой-то момент остаётся только один кандидат, он и считается победителем.
Необходимо определить имя победителя.
Входные данные
В первой строке записаны два целых числа n и m — число избирателей и число кандидатов соответственно.
В следующих m строках записаны имена кандидатов, по одному в строке. Все имена различны.
В следующих n строках описаны бюллетени. Каждая из этих строк содержит m имён кандидатов через пробел — в порядке от наиболее предпочтительного к наименее предпочтительному.
Гарантируется, что в каждом бюллетене перечислены все m кандидатов, и каждое имя входит в список кандидатов.
Выходные данные
Выведите одно имя — победителя выборов.
Ограничения
1 <= n <= 10^42 <= m <= 20- каждое имя кандидата — непустая строка длины не более
20, состоящая из строчных латинских букв - все имена кандидатов различны
Примеры
Пример 1
Входные данные
3 2
a
b
a b
b a
b a
Выходные данные
b
Пример 2
Входные данные
5 3
a
b
c
a b c
a b c
a b c
b c a
c a b
Выходные данные
a
Комментарии