https://atcoder.jp/contests/abc195/tasks/abc195_b
解説
https://atcoder.jp/contests/abc195/submissions/20907660
パッと見て、O(1)で判定ができそうな感じがするが、
結構注意しないと境界条件が怪しくなりそうな感じもする。
本番はそれもあって飛ばしてしまったが、全探索ができるのか。なるほど。
全探索
可能性のある、選ばれるみかんの個数は最大W*1000個である。
つまり、最大106であり、これは全探索可能。
判定もそれほど難しくないので、これなら怪しい境界条件を気にせずに済む。
choose個選んだとすると、Achoose~Bchooseの数を作ることができるので、
その条件が満たされる中で、最小値と最大値を求めればいい。
条件を満たすものがない場合は、初期値のまま残るので、初期値のままなら
UNSATISFIABLEをこたえる。
int A, B, W; //--------------------------------------------------------------------------------------------------- void _main() { cin >> A >> B >> W; W *= 1000; int mi = inf, ma = -1; rep(choose, 1, W + 1) { int L = choose * A; int R = choose * B; if (L <= W && W <= R) { chmin(mi, choose); chmax(ma, choose); } } if (mi == inf) cout << "UNSATISFIABLE" << endl; else cout << mi << " " << ma << endl; }