Source code for titan_pylib.data_structures.others.pair

[docs] 1class Pair: 2 3 # pair<unsigned int, unsigned int> 4 5 def __init__(self, first: int, second: int): 6 self.d = (first << 32) | second 7 8 def __getitem__(self, k: int): 9 return self.d >> 32 if k == 0 else self.d & 4294967295 10 11 def __setitem__(self, k: int, v: int): 12 self.d = (v << 32) | (self.d & 4294967295) if k == 0 else self.d >> 32 << 32 | v 13 14 @property 15 def first(self) -> int: 16 return self.d >> 32 17 18 @property 19 def second(self) -> int: 20 return self.d & 4294967295 21 22 @first.setter 23 def first(self, v: int): 24 self.d = (v << 32) | (self.d & 4294967295) 25 26 @second.setter 27 def second(self, v: int): 28 self.d = self.d >> 32 << 32 | v 29 30 def __hash__(self): 31 return self.d 32 33 def __str__(self): 34 return f"[{self.d >> 32}, {self.d & 4294967295}]" 35 36 def __repr__(self): 37 return f"Pair({self.first}, {self.second})"