Warning: session_start(): open(/var/lib/php/sessions/sess_qt92jk88s19h04crm0e1poo2qe, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
sclass LineComp_PairIndex {
delegate Node to LineComp_LinkedList_v2.
MultiSetMap nodes = multiSetMap_innerHashSet_outerHashMap();
MultiSetMap byCount = multiSetMap_innerTreeSet_outerRevTreeMap();
IntPair nodeToPair(Node n) {
ret n?.pair();
}
// add node to pair index
void add(Node n) {
IntPair p = nodeToPair(n);
if (p == null) ret;
int count = nodes.getSize(p);
nodes.add(p, n);
byCount.remove(count, p);
byCount.put(count+1, p);
}
// remove node from pair index
void remove(Node n) {
IntPair p = nodeToPair(n);
if (p == null) ret;
int count = nodes.getSize(p);
if (count == 0) fail("Can't remove pair " + p);
nodes.remove(p, n);
byCount.remove(count, p);
if (count-- > 0) byCount.put(count, p);
}
IntPair mostPopularDuplicate() {
ret toInt(firstKey(byCount)) < 2 ? null : firstValue(byCount);
}
int numberOfDuplicates() {
ret counts.size()-l(byCount.get(1));
}
int getCount(IntPair p) {
ret nodes.getSize(p);
}
}