% https://open.kattis.com/problems/trackingshares % 1s % 2.1 Easy % As expected, this is quite shorter: 486 chars import util. main :- [_|S] = read_file_lines(), s(1,S,T), TF = T.flatten.sort, Days = [D : $D-_ in TF].sort_remove_dups, Shares = new_map(), foreach(D in Days) FF = [$C-N : $DD-[C,N] in TF,D == DD], foreach($C-N in FF) Shares.put(C,N) end, printf("%d ",Shares.values.sum) end, nl. s(_,[],[]). s(C,[S|Ss],[AsS|L]) :- A = new_list(S.to_int), append(A,Rest,Ss), AsS = [$D-[C,N] : T in A,[N,D] = T.split(" ").map(to_int)].sort, s(C+1,Rest,L).