В стране Бялечинск начались выборы президента, в которых участвуют n кандидатов. Страна состоит из m городов. Известно, сколько человек в каждом городе проголосовало за каждого кандидата.
Система выборов в стране имеет необычный вид. На первом этапе выборов подводятся итоги голосованя по городам: считается, что в городе победил тот кандидат, за которого было отдано наибольшее количество голосов в этом городе, а в случае, если несколько кандидатов набрали максимальное количество голосов — кандидат с наименьшим номером из них.
На втором этапе выборов по тому же принципу определяется победитель: победителем выборов считается кандидат, за которого проголосовало максимальное количество городов, а среди набравших максимальное количество голосов — кандидат с наименьшим номером.
Определите, кто победит на выборах?
Первая строка входных данных содержит два целых числа n, m (1 ≤ n, m ≤ 100) — количество кандидатов и городов соответственно.
В последующих m строках записано по n целых неотрицательных чисел, j-е число в i-й строке aij (1 ≤ j ≤ n, 1 ≤ i ≤ m,0 ≤ aij ≤ 109) обозначает количество голосов за кандидата номер j в городе номер i.
Гарантируется что суммарное количество жителей во всех городах не превосходит 109.
Выведите единственное число — номер кандидата, победившего в выборах. Кандидаты нумеруются с единицы.
Примеры тестов
1 2 3 4 |
3 3 1 2 3 2 3 1 1 2 1 |
1 |
2 |
1 2 3 4 5 |
3 4 10 10 3 5 1 6 2 2 2 1 5 7 |
1 |
1 |
Примечание
Пояснение к первому тесту из условия. В первом туре город 1 проголосовал за кандидата 3, город 2 проголосовал за кандидата 2, город 3 проголосовал за кандидата 2. Победил кандидат 2, набрав 2 голоса.
Пояснение ко второму тесту из условия. В первом туре в городе 1 за кандидатов 1 и 2 проголосовало одинаковое максимальное количество голосов, но кандидат 1 имеет меньший номер поэтому город отдал предпочтение кандидату 1. Город 2 проголосовал за кандидата 3. Город 3 проголосовал за 1, в связи с тем что все имеют одинаковое количество голосов и 1 имеет наименьший номер. Город 4 проголосовал за кандидата 3. За кандидатов 1 и 3 проголосовало равное количество городов. Победил кандидат 1, имеющий наименьший номер.
Мое решение:
Во время раунда отправил не верный вариант только после раунда обратил внимание, что результаты по городу могут быть у всех нули и тогда всё равно будет победитель первый мой код же их игнорировал, пришлось изменить две строчки, добавив к считанным данным о результате кандидата +1. это как бы гарантировало, что результат не будет равен 1 и всё нормально сработало. хотя наверно можно было просто в десятой строке значение сделать так: «result = -1;»
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
var data = readline().split(' '); //читаем первую строчку входных данных var candidates = parseInt(data[0]); //первое число кол-во кандидатов var cities = parseInt(data[1]); //второе число кол-во городов var result_cities = []; //тут будем хранить результаты по городам //перечисляем города for (var i = 0; i < cities; i++) { var data = readline().split(' '); //считываем результаты по городу var result = 0; //изначально результат делаем равным нулю //перечисляем результаты по городу for (var x = 0; x < candidates; x++) { var temp_result = parseInt(data[x]+1); //прибавляем единицу, это костыль, чтобы если результат у кандидатов 0, то мы тоже могли найти победителя по условию задачи if(result<temp_result) { //если текущий кандидат набрал больше предыдущего result = parseInt(data[x]+1); //то его результат пишем result_cities[i] = x+1;//и запоминаем номер кандидата, +1 потому что кандидаты нумеруются от единицы, а у нас цикл от нуля } } } //на выходе массив с результатами голосования по городам var candidate_list = [candidates]; for (var i = 0; i < candidates; i++) { candidate_list[i] = 0; //подсчитываем количество побед у каждого кандидата for (var x = 0; x < cities; x++) { if((i+1) == result_cities[x]) { candidate_list[i]++; } } } result = 1;//по умолчанию первый победитель, если вдруг кандидатов всего один :) //находим победителя for (var i = 1; i < candidates; i++) { if(candidate_list[i] > candidate_list[result-1]) { result = i+1; } } write(result); |