Ну и на последок
"Тут надо быть гением даже не думай" - как сказал мне мой учитель
В командных олимпиадах по программированию для решения предлагается
не больше 11 задач. Команда может решать предложенные задачи в любом
порядке. Подготовленные решения команда посылает в единую
проверяющую систему соревнований. Вам предлагается написать
эффективную, в том числе по используемой памяти, программу, которая
будет статистически обрабатывать пришедшие запросы, чтобы определить
наиболее популярные задачи. Следует учитывать, что количество запросов в
списке может быть очень велико, так как многие соревнования проходят с
использованием Интернет.
Перед текстом программы кратко опишите используемый вами алгоритм
решения задачи.
На вход программе в первой строке подаётся количество пришедших
запросов N. В каждой из последующих N строк записано название задачи
в виде текстовой строки. Длина строки не превосходит 100 символов,
название может содержать буквы, цифры, пробелы и знаки препинания.
Пример входных данных:
6
А+B
Крестики-Нолики
Прямоугольник
Простой делитель
А+В
Простой делитель
Программа должна вывести список из трёх наиболее популярных задач
с указанием количества запросов по ним. Если в запросах упоминаются
менее трех задач, то выведите информацию об имеющихся задачах. Если
несколько задач имеют ту же частоту встречаемости, что и третья по частоте
встречаемости задача, их тоже нужно вывести.
Пример выходных данных для приведённого выше примера входных данных:
А+В 2
Простой делитель 2
Крестики-Нолики 1
Прямоугольник 1
Думаю, тупой перебор зайдет. Вряд ли N>10^7, а значит за секунду спокойно.