Я не умею описывать алгоритмы, но я попытался. Можно уменьшить кол-во map-ов, мне так удобнее.
Алгоритм
1. Создаем map, который содержит максмальное кол-во сделок в одну минуту. - result и map текущий результат - current_result.
Создаем map, который содержит первоначальное время. - times (изначальное 0)
2. Считываем одну строку, получаем time и exchange
3. Если times.time + 60 > time ( если первоначальное время в секундах + 60 меньше текущего времени),
тогда current_result.result++;
Иначе
result.result = max(result.result, current_result.result) ( определение макисмального результата)
times.time = time (текущее время становится первоначальным)
current_result.result = 1 (сейчас в минутном окне 1 сделка)
4. goto 2.
5. Вывести отсортированный result.