#include<set>
#include<iostream>
using namespace std;
struct comp__f {
bool operator() (const pair<double, int>& lhs, const pair<double, int>& rhs) const{
return (lhs.second != rhs.second) && (lhs.first < rhs.first);
}
};
int main()
{
set<pair<double, int>, comp__f> s;
s.insert(make_pair(10.234, 1));
s.insert(make_pair(20.123, 2));
s.insert(make_pair(10.2, 1));
s.insert(make_pair(30.33, 3));
s.insert(make_pair(20.123, 1));
for(auto entry : s)
cout << entry.first << " - " << entry.second << endl;
return 0;
}
I2luY2x1ZGU8c2V0PgojaW5jbHVkZTxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBjb21wX19mIHsKICAgIGJvb2wgb3BlcmF0b3IoKSAoY29uc3QgcGFpcjxkb3VibGUsIGludD4mIGxocywgY29uc3QgcGFpcjxkb3VibGUsIGludD4mIHJocykgY29uc3R7CiAgICAgICAgcmV0dXJuIChsaHMuc2Vjb25kICE9IHJocy5zZWNvbmQpICYmIChsaHMuZmlyc3QgPCByaHMuZmlyc3QpOwogICAgfQp9OwoKaW50IG1haW4oKQp7CiAgICBzZXQ8cGFpcjxkb3VibGUsIGludD4sIGNvbXBfX2Y+IHM7CiAgICBzLmluc2VydChtYWtlX3BhaXIoMTAuMjM0LCAxKSk7CiAgICBzLmluc2VydChtYWtlX3BhaXIoMjAuMTIzLCAyKSk7CiAgICBzLmluc2VydChtYWtlX3BhaXIoMTAuMiwgMSkpOwogICAgcy5pbnNlcnQobWFrZV9wYWlyKDMwLjMzLCAzKSk7CiAgICBzLmluc2VydChtYWtlX3BhaXIoMjAuMTIzLCAxKSk7CgogICAgZm9yKGF1dG8gZW50cnkgOiBzKQogICAgICAgIGNvdXQgPDwgIGVudHJ5LmZpcnN0IDw8ICIgLSAiIDw8IGVudHJ5LnNlY29uZCA8PCBlbmRsOwogICAgICAgIAogICAgcmV0dXJuIDA7Cn0=