#include <iostream>
#include<complex>
#include<map>
#include<unordered_map>
#include<array>
template<typename T> struct less{};
template<typename T>
struct less<std::complex<T> >
{
bool operator()(std::complex<T> const& a, std::complex<T> const& b)
{
return std::array<T,2>{a.real(),a.imag()} < std::array<T,2>{b.real(),b.imag()};
}
};
int main()
{
std::map<std::complex<double>, int, less<std::complex<double> > > m;
m[std::complex<double>(1.0,0.0)]=1;
m[std::complex<double>(0.0,1.0)]=2;
m[{0.5,0.5}]=3;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxjb21wbGV4PgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlPGFycmF5PgoKdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IGxlc3N7fTsKCnRlbXBsYXRlPHR5cGVuYW1lIFQ+CnN0cnVjdCBsZXNzPHN0ZDo6Y29tcGxleDxUPiA+CnsKCWJvb2wgb3BlcmF0b3IoKShzdGQ6OmNvbXBsZXg8VD4gY29uc3QmIGEsIHN0ZDo6Y29tcGxleDxUPiBjb25zdCYgYikKCXsKCQlyZXR1cm4gc3RkOjphcnJheTxULDI+e2EucmVhbCgpLGEuaW1hZygpfSA8IHN0ZDo6YXJyYXk8VCwyPntiLnJlYWwoKSxiLmltYWcoKX07Cgl9Cn07CgppbnQgbWFpbigpCnsKCXN0ZDo6bWFwPHN0ZDo6Y29tcGxleDxkb3VibGU+LCBpbnQsIGxlc3M8c3RkOjpjb21wbGV4PGRvdWJsZT4gPiA+IG07CgoJbVtzdGQ6OmNvbXBsZXg8ZG91YmxlPigxLjAsMC4wKV09MTsKCW1bc3RkOjpjb21wbGV4PGRvdWJsZT4oMC4wLDEuMCldPTI7CgltW3swLjUsMC41fV09MzsKCglyZXR1cm4gMDsKfQ==