Post History
Haskell, 141 bytes import Control.Monad f a=map(map fst)$filter(\c->let{g=map snd;e=sum(g a)`div`2;f=g c;d=sum f}in d>e&&all((<=e).(d-))f)$filterM(pure[1<0..])a Try it ...
Answer
#1: Initial revision
# [Haskell], 141 bytes <!-- language-all: lang-hs --> import Control.Monad f a=map(map fst)$filter(\c->let{g=map snd;e=sum(g a)`div`2;f=g c;d=sum f}in d>e&&all((<=e).(d-))f)$filterM(pure[1<0..])a [Try it online!][TIO-ku61ljrj] Explanation: we generate all possible coalitions and then filter out the bad ones. `filterM(pure[1<0..])a` is the powerset of input. [Haskell]: https://www.haskell.org/ [TIO-ku61ljrj]: https://tio.run/##lY@9boMwFEZ3nsJCUWRLYAEqURUCS9WhQ6aONFIsbBOr5hphkw5Vn52apD9k6NDB0nd9zrU@n5h9FVpPk@p6Mzj0YMANRtO9AcYDiVjZsR77g6R1ZCWVdmLAL01caeHe25kGFnghSjt2uEWMHLk6H7NCli1qCj5fB/JDAeKVWK@Z1hjvSkEo5jEh8vvFPe7HQdTpLqH0QNjUMQWlAk9Y41YKlKMjaAXC0rmPPZk3KikeBOPb7bMbFLRxVeNrip7AkQMh9LIw1TgEBiaMspwcAj@dlc8JiXD42LHG@iH9CyRX8LV/QbOU5gspzW6k/Ee6W0j3c24FVy6MNks/3fzT/y2xbJovfP/NTw "Haskell – Try It Online"