Word Game (Codeforces 1722C)
Tags: Implement, data structures

Three guys play a game: first, each person writes down $$$n$$$ distinct words of length $$$3$$$. Then, they total up the number of points as follows:   if a word was written by one person — that person gets 3 points,  if a word was written by two people — each of the two gets 1 point,  if a word was written by all — nobody gets any points.  In the end, how many points does each player have?

Input: The input consists of multiple test cases. The first line contains an integer $$$t$$$ ($$$1 \leq t \leq 100$$$) — the number of test cases. The description of the test cases follows.The first line of each test case contains an integer $$$n$$$ ($$$1 \leq n \leq 1000$$$) — the number of words written by each person.The following three lines each contain $$$n$$$ distinct strings — the words written by each person. Each string consists of $$$3$$$ lowercase English characters.

Output: For each test case, output three space-separated integers — the number of points each of the three guys earned. You should output the answers in the same order as the input; the $$$i$$$-th integer should be the number of points earned by the $$$i$$$-th guy.

Note: In the first test case:   The word $$$\texttt{abc}$$$ was written by the first and third guys — they each get $$$1$$$ point.  The word $$$\texttt{def}$$$ was written by the second guy only — he gets $$$3$$$ points. 

Sample Inputs:
3
1
abc
def
abc
3
orz for qaq
qaq orz for
cod for ces
5
iat roc hem ica lly
bac ter iol ogi sts
bac roc lly iol iat

Sample Outputs:
1 3 1 
2 2 6 
9 11 5

Solution (Python):
for t in range(int(input())):
    input()
    a = set(input().split())
    b = set(input().split())
    c = set(input().split())
    q = a & b
    s1_2 = len(q)
    s1_2_3 = len(q & c)
    s2_3 = len(b & c)
    s1_3 = len(a & c)
    s1 = len(a)
    s2 = len(b)
    s3 = len(c)
    _s = s1_2_3 - (s1_2 << 1)
    print(s1 * 3 - (s1_3 << 1) + _s, s2 * 3 - (s2_3 << 1) + _s, s3 * 3 - (s1_3 << 1) - (s2_3 << 1) + s1_2_3)

Solution (Python):
for t in range(int(input())):
    input()
    a = set(input().split())
    b = set(input().split())
    c = set(input().split())
    q = a & b
    s1_2 = len(q)
    s1_2_3 = len(q & c)
    s2_3 = len(b & c)
    s1_3 = len(a & c)
    s1 = len(a)
    s2 = len(b)
    s3 = len(c)
    _s = s1_2_3 - s1_2 * 2
    print(s1 * 3 - s1_3 * 2 + _s, s2 * 3 - s2_3 * 2 + _s, s3 * 3 - s1_3 * 2 - s2_3 * 2 + s1_2_3)

Solution (Python):
for t in range(int(input())):
    input()
    a = set(input().split())
    b = set(input().split())
    c = set(input().split())
    q = a & b
    s1_2 = len(q)
    s1_2_3 = len(q & c)
    s2_3 = len(b & c)
    s1_3 = len(a & c)
    s1 = len(a)
    s2 = len(b)
    s3 = len(c)
    _s = s1_2_3 - s1_2 * 2
    print(s1 * 3 - s1_3 * 2 + _s, s2 * 3 - s2_3 * 2 + _s, s3 * 3 - s1_3 * 2 - s2_3 * 2 + s1_2_3)