Warning: session_start(): open(/var/lib/php/sessions/sess_3oubrvrur6njl7vp33gqdi48iq, 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_PairCounts {
new MultiSet counts;
MultiSetMap byCount = multiSetMap_innerTreeSet_outerRevTreeMap();
void addAll(Iterable l) { fOr (IntPair p : l) add(p); }
void removeAll(Iterable l) { fOr (IntPair p : l) remove(p); }
// increment pair's count
void add(IntPair p) {
int count = counts.get(p);
byCount.remove(count, p);
counts.add(p);
byCount.put(count+1, p);
}
// decrement pair's count
void remove(IntPair p) {
int count = counts.get(p);
if (count == 0) fail("Can't remove pair " + p);
byCount.remove(count, p);
counts.remove(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 counts.get(p);
}
}