#include <iostream>
#include <string>
#include <map>
#include <list>
using namespace std;
int main()
{
multimap<string,string> students;
students.insert(make_pair("a","cs1"));
students.insert(make_pair("b","cs1"));
students.insert(make_pair("b","cs2"));
students.insert(make_pair("a","cs2"));
students.insert(make_pair("c","cs1"));
students.insert(make_pair("a","cs2"));
students.insert(make_pair("c","cs2"));
students.insert(make_pair("c","cs3"));
std::string current_key = "";
for (auto itr = students.begin(); itr != students.end(); ++itr)
{
if(current_key == itr->first) {
continue;
} else {
current_key = itr->first;
}
const auto result = students.equal_range(itr->first);
cout << itr->first << ": ";
for(auto it = result.first; it != result.second; ++it) {
cout << it->second << " ";
}
cout << endl;
}
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8bGlzdD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKICAgIG11bHRpbWFwPHN0cmluZyxzdHJpbmc+IHN0dWRlbnRzOwogICAgc3R1ZGVudHMuaW5zZXJ0KG1ha2VfcGFpcigiYSIsImNzMSIpKTsKICAgIHN0dWRlbnRzLmluc2VydChtYWtlX3BhaXIoImIiLCJjczEiKSk7CiAgICBzdHVkZW50cy5pbnNlcnQobWFrZV9wYWlyKCJiIiwiY3MyIikpOwogICAgc3R1ZGVudHMuaW5zZXJ0KG1ha2VfcGFpcigiYSIsImNzMiIpKTsKICAgIHN0dWRlbnRzLmluc2VydChtYWtlX3BhaXIoImMiLCJjczEiKSk7CiAgICBzdHVkZW50cy5pbnNlcnQobWFrZV9wYWlyKCJhIiwiY3MyIikpOwogICAgc3R1ZGVudHMuaW5zZXJ0KG1ha2VfcGFpcigiYyIsImNzMiIpKTsKICAgIHN0dWRlbnRzLmluc2VydChtYWtlX3BhaXIoImMiLCJjczMiKSk7CiAgICAKICAgIAogICAgCXN0ZDo6c3RyaW5nIGN1cnJlbnRfa2V5ID0gIiI7CiAgICAgICAgZm9yIChhdXRvIGl0ciA9IHN0dWRlbnRzLmJlZ2luKCk7IGl0ciAhPSBzdHVkZW50cy5lbmQoKTsgKytpdHIpIAogICAgICAgIHsgCiAgICAgICAgICAgIGlmKGN1cnJlbnRfa2V5ID09IGl0ci0+Zmlyc3QpIHsKICAgICAgICAgICAgCWNvbnRpbnVlOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAJY3VycmVudF9rZXkgPSBpdHItPmZpcnN0OwogICAgICAgICAgICB9CiAgICAgICAgCWNvbnN0IGF1dG8gcmVzdWx0ID0gc3R1ZGVudHMuZXF1YWxfcmFuZ2UoaXRyLT5maXJzdCk7CiAgICAgICAgCWNvdXQgPDwgaXRyLT5maXJzdCA8PCAiOiAiOwogICAgICAgIAlmb3IoYXV0byBpdCA9IHJlc3VsdC5maXJzdDsgaXQgIT0gcmVzdWx0LnNlY29uZDsgKytpdCkgewogICAgICAgIAkJY291dCA8PCBpdC0+c2Vjb25kIDw8ICIgIjsKICAgICAgICAJfQogICAgICAgIAljb3V0IDw8IGVuZGw7CiAgICAgICAgCQogICAgICAgIH0gCiAgICAKfQ==