А, я предполагаю, что это домашнее задание. Поправьте меня, если я ошибаюсь.
Как бы вы это сделали, если бы я попросил вас реализовать алгоритм? Вы можете видеть из вашего примера ввода, что легче подсчитывать членов каждой группы, когда ввод группируется, а не перетасовывается в произвольном порядке. Если вы отсортируете вход, вы получите различные элементы, сгруппированные. Затем вам просто нужно будет перебирать последовательность, чтобы подсчитать членов каждой группы.
Когда вы работаете с алгоритмом, попробуйте уточнить его, чтобы он никогда не читал элемент входной последовательности более одного раза. Если вы можете удовлетворить гарантию того, что каждый элемент будет считываться ровно один раз, и чтобы элементы читались в порядке от начала до конца, ваш алгоритм будет работать на вход, поступающий непосредственно из входного потока, такого как stdin (пока он будет отсортирован), без необходимости сначала копировать входные данные из входного потока во временный контейнер.
Это C или C++? Это очень разные языки. –
Это домашнее задание? – n0rd
@Mike ok, я извиняюсь, мне нужно это на C++. –