#ifndef UTILITY_ #define UTILITY_ namespace std { template<typename T1, typename T2> class pair { public: T1 first; T2 second; pair() : first(), second() {} pair(const T1& v1, const T2& v2) : first(v1), second(v2) {} template<typename U1, typename U2> pair(const pair<U1, U2>& other) : first(other.first), second(other.second) {} bool operator== (const pair& other) const { return first == other.first && second == other.second; } bool operator!= (const pair& other) const { return ! (*this == other); } bool operator< (const pair& other) const { if(first < other.first) return true; if(other.first < first) return false; return second < other.second; } }; template<typename T1, typename T2> inline pair<T1, T2> make_pair(T1 v1, T2 v2) { return pair<T1, T2> (v1, v2); } } #endif /*UTILITY_*/