#include <map>
#include <ostream>
#include <string>
#include <iostream>
using namespace std;
class Osoba {
public :
string imie, nazwisko;
int ID;
Osoba(string i, string n, int id) {imie = i; nazwisko = n, ID = id;}
bool operator==(const Osoba &q) {return ID ==q.ID && imie == q.imie && nazwisko == q.nazwisko;}
friend ostream & operator<< (ostream &wyjscie, const Osoba &s);
};
ostream & operator<< (ostream &wyjscie, const Osoba &s)
{
return (wyjscie << s.imie << " " << s.nazwisko << " " << s.ID << "\n");
}
int main()
{
Osoba o1("Jan", "Kowalski", 123);
Osoba o2("Adam", "Nowak", 1234);
Osoba o3("Anna", "Kowalska", 12345);
map<const int, Osoba> osoby;
map<const int, Osoba>::iterator it;
osoby.insert(make_pair(1, o1));
osoby.insert(make_pair(2, o2));
osoby.insert(make_pair(3, o3));
it = osoby.begin();
for ( it=osoby.begin() ; it != osoby.end(); it++ )
cout << (*it).first << " => " << (*it).second << endl;
return 0;
}
I2luY2x1ZGUgPG1hcD4KI2luY2x1ZGUgPG9zdHJlYW0+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApjbGFzcyBPc29iYSB7CiAKcHVibGljIDoKICAgIHN0cmluZyBpbWllLCBuYXp3aXNrbzsKICAgIGludCBJRDsKIAogICAgT3NvYmEoc3RyaW5nIGksIHN0cmluZyBuLCBpbnQgaWQpIHtpbWllID0gaTsgbmF6d2lza28gPSBuLCBJRCA9IGlkO30KICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBPc29iYSAmcSkge3JldHVybiBJRCA9PXEuSUQgJiYgaW1pZSA9PSBxLmltaWUgJiYgbmF6d2lza28gPT0gcS5uYXp3aXNrbzt9CiAgICBmcmllbmQgb3N0cmVhbSAmIG9wZXJhdG9yPDwgKG9zdHJlYW0gJnd5anNjaWUsIGNvbnN0IE9zb2JhICZzKTsKfTsKIAogCm9zdHJlYW0gJiBvcGVyYXRvcjw8IChvc3RyZWFtICZ3eWpzY2llLCBjb25zdCBPc29iYSAmcykKewogIHJldHVybiAod3lqc2NpZSA8PCBzLmltaWUgPDwgIiAiIDw8IHMubmF6d2lza28gPDwgIiAiIDw8IHMuSUQgPDwgIlxuIik7Cn0KIAppbnQgbWFpbigpCnsKIAogICAgT3NvYmEgbzEoIkphbiIsICJLb3dhbHNraSIsIDEyMyk7CiAgICBPc29iYSBvMigiQWRhbSIsICJOb3dhayIsIDEyMzQpOwogICAgT3NvYmEgbzMoIkFubmEiLCAiS293YWxza2EiLCAxMjM0NSk7CiAKICAgIG1hcDxjb25zdCBpbnQsIE9zb2JhPiBvc29ieTsKICAgIG1hcDxjb25zdCBpbnQsIE9zb2JhPjo6aXRlcmF0b3IgaXQ7CiAKICAgIG9zb2J5Lmluc2VydChtYWtlX3BhaXIoMSwgbzEpKTsKICAgIG9zb2J5Lmluc2VydChtYWtlX3BhaXIoMiwgbzIpKTsKICAgIG9zb2J5Lmluc2VydChtYWtlX3BhaXIoMywgbzMpKTsKIAogICAgaXQgPSBvc29ieS5iZWdpbigpOwogCiAgICBmb3IgKCBpdD1vc29ieS5iZWdpbigpIDsgaXQgIT0gb3NvYnkuZW5kKCk7IGl0KysgKQogICAgICAgIGNvdXQgPDwgKCppdCkuZmlyc3QgPDwgIiA9PiAiIDw8ICgqaXQpLnNlY29uZCA8PCBlbmRsOwogCiAgICByZXR1cm4gMDsKfQog