https://beta.atcoder.jp/contests/qupc2018/tasks/qupc2018_b
解説
https://beta.atcoder.jp/contests/qupc2018/submissions/3436323
まず総額が奇数ならば、同数に分割はできない。
片方が総数/2を実現できるかを判定する。
ピッタリに払う最適戦略として、高い値段の硬貨を貪欲に使うという方法がある。
総数/2を払うために高い値段の硬貨から貪欲に使っていって、残りが0になれば、片方が総数/2を払えたことになる。
このときYes、そうでないならNo
int Q; //--------------------------------------------------------------------------------------------------- #define yes "Yes" #define no "No" string solve(ll A, ll B, ll C) { ll sm = A * 100 + B * 10 + C; if (sm % 2 == 1) return no; ll half = sm / 2; ll p100 = min(half / 100, A); half -= p100 * 100; ll p10 = min(half / 10, B); half -= p10 * 10; ll p1 = min(half, C); half -= p1; if (half == 0) return yes; return no; } //--------------------------------------------------------------------------------------------------- void _main() { cin >> Q; rep(q, 0, Q) { int A, B, C; cin >> A >> B >> C; cout << solve(A, B, C) << endl; } }