https://yukicoder.me/problems/no/846
解説
ceil(N/P)=AであるNの範囲は、[P*(A-1)+1,P*A]である。
他のメダルについても同様に条件を満たすNの範囲が存在する。
他のメダルについては、そのメダルだけの枚数で計算することになってしまうので、B+=A, C+=Bとして、
銀メダル以上、銅メダル以上として計算をしよう。
すべてのメダルの条件を満たす必要があるので、全ての区間に入っている区間を計算する。
区間[a,b]と区間[c,d]のどちらにも含まれる区間は、[max(a,c), min(b,d)]であるので、これを計算していく。
最後に区間[mi,ma]になったとすると、mi>maになった場合はすべての条件を満たす区間は無いので、-1。
そうでないなら、最小と最大を答える。
ll P, Q, R, A, B, C; //--------------------------------------------------------------------------------------------------- void _main() { cin >> P >> Q >> R >> A >> B >> C; B += A; C += B; ll mi = -infl, ma = infl; chmax(mi, P * (A - 1) + 1); chmin(ma, P * A); chmax(mi, Q * (B - 1) + 1); chmin(ma, Q * B); chmax(mi, R * (C - 1) + 1); chmin(ma, R * C); if (mi > ma) cout << -1 << endl; else cout << mi << " " << ma << endl; }