2026-01-06 21:39:35 +0300 MSK
Sequentially Ordinal Rank Tracker
Links
Code
class MaxString:
__slots__ = ("s")
def __init__(self, s):
self.s = s
def __lt__(self, other):
return self.s > other.s
class SORTracker:
def __init__(self):
self.right = []
self.left = []
def add(self, name: str, score: int) -> None:
_, name, score = heapq.heappushpop(
self.left,
((score, MaxString(name)), name, score)
)
heapq.heappush(self.right, ((-score, name), name, score))
def get(self) -> str:
_, name, score = heapq.heappop(self.right)
heapq.heappush(self.left, ((score, MaxString(name)), name, score))
return name