Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct pair_hash {
- template<class T1, class T2>
- size_t operator() (const pair<T1, T2> &p) const {
- return hash<T1>()(p.first)^hash<T2>()(p.second);
- }
- };
- unordered_map<pair<int,int>,int,pair_hash> match;
- struct custom_hash {
- static uint64_t splitmix64 (uint64_t x) {
- x += 0x9e3779b97f4a7c15;
- x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;
- x = (x ^ (x >> 27)) * 0x94d049bb133111eb;
- return x ^ (x >> 31);
- }
- size_t operator () (uint64_t x) const {
- static const uint64_t FIXED_RANDOM = chrono::steady_clock::now().time_since_epoch().count();
- return splitmix64(x + FIXED_RANDOM);
- }
- };
- unordered_map<int,int,custom_hash> Map;
Add Comment
Please, Sign In to add comment