Rafik
А слабо, собрать входные данные в список, отсортировать его реверсивно и, в цикле, посчитать сколько элементов равны певому элементу списка?
Сделай, конечно, так, чтобы чисто лучше питон узнать. Но это алгоритмически неправильно. Во-первых, данные нужно стараться обрабатывать так, будто они поступают бесконечно (это могут быть датчики, огромные массивы данных и тому подобное), поэтому нужно стараться не собирать данные никуда, а обрабатывать их на лету, иначе не хватит памяти и время выполнения будет удлинняться. Во-вторых, ты предложил отсортировать все данные, хотя в них может быть, например, миллиард единиц и двоек и одно число сто. Зачем сортировать этот миллиард элементов? Достаточно число сто получить через линейную функцию max(), а потом считать его количество такой же линейной функцией. При этом миллиард единиц и двоек остаются нетронутыми на своих местах и, соответственно, на них не тратится время на сравнения и перемещения.
У него же алгоритм верный - обработка идёт на лету, - но он его не смог точно реализовать и написал код с ошибкой. Единственное что, он не должен читать из входного потока, а должен брать элементы из итератора, а итератор уже прикрепляется к входному потоку ввода. Так итератор можно прикреплять не только к входному потоку ввода, но и к сетевому сокету, к файлу, к любому генератору данных.