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 (Pair p : l) add(p);
}
// increment pair's count
void add(Pair p) {
int count = counts.get(p);
byCount.remove(count, p);
counts.add(p);
byCount.put(count+1, p);
}
// decrement pair's count
void remove(Pair p) {
int count = counts.get(p);
if (count == 0) fail("Can't remove pair " + p);
byCount.remove(count, p);
counts.add(p);
if (count-- > 0) byCount.put(count, p);
}
Pair mostPopularDuplicate() {
ret toInt(firstKey(byCount)) < 2 ? null : firstValue(byCount);
}
int numberOfDuplicates() {
ret counts.size()-l(byCount.get(1));
}
int getCount(Pair p) {
ret counts.get(p);
}
}