考え方
入力例1の3番目をもとに考察するとよい(具体例大事!).$R \leq B$とする(例は既にそうなっている).
以下の手順で全てGに変えることができる.
R G B 1 2 4 3 1 3 2 3 2 1 5 1 0 7 0
つまり,すべてGにしたければ,RとBを同じ個数に調整できればよいことがわかる.この調整は,(B - R) % 3 == 0
を満たすときに限り実現できる(G, BをRに変えると,G, Bは1減り,Rは2増えるため).また,調整に必要な操作回数は(B - R) // 3
回である.
よって,(B - R) % 3 == 0
のとき
(B - R) // 3
回,G, BをRに変える(Rは2 * (B - R) // 3
増える)R + 2 * (B - R) // 3
回,R, BをGに変える
あとは,R, G, Bの役割を変えて${}_{3}\mathrm{C}_{2}=3$通り試して一番小さいものを出力すれば良い.
【回答例】
T = int(input()) for _ in range(T): R, G, B = sorted(map(int, input().split())) tmp = [] for x, y, z in ([(R, G, B), (R, B, G), (G, R, B)]): if (z - x) % 3 == 0: tmp.append(x + 3 * (z - x) // 3) if tmp: print(min(tmp)) else: print(-1)