sclass PosNeg { new MultiSet pos; new MultiSet neg; void add(A a, int score) { if (score > 0) pos.add(a, score); else if (score < 0) neg.add(a, -score); } void add(A a, Bool b) { if (isTrue(b)) pos.add(a); else if (isFalse(b)) neg.add(a); } int get(A a) { ret pos.get(a)-neg.get(a); } int score() { ret l(pos)-l(neg); } int n() { ret l(pos)+l(neg); } bool isEmpty() { ret n() == 0; } }