https://atcoder.jp/contests/nikkei2019-qual/tasks/nikkei2019_qual_a
解説
https://atcoder.jp/contests/nikkei2019-qual/submissions/4096706
両方を購読している人の最大は、なるべく重ねると実現できるので、min(A,B)となる。
最小は、なるべく離せばいいのだが、式におこすのが難しい。
A人とB人をなるべく離しておくとA+Bとなる。
これがNに収まれば、両方購読している人は0であるが、収まらないなら、はみ出した分が両方購読する人になる。
なので、A+B-Nが答え。
しかし、これはA+BがNに満たない場合はマイナスになるので、0とのmaxをとっておく。
int N, A, B; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N >> A >> B; int ans1 = min(A, B); int ans2 = max(0, (A + B) - N); cout << ans1 << " " << ans2 << endl; }