https://yukicoder.me/problems/no/799
解説
https://yukicoder.me/submissions/325296
「全通り-被ってしまった場合」で答えを出す。
全通りは、(B-A+1)*(D-C+1)である。
被ってしまった場合は、同じ数がでてきた場合になるので、[A,B]と[C,D]が重なっている区間を見る。
これは、[max(A,C),min(B,D)]となる。
この区間の長さが同じ数となる組み合わせ数となる。
int A, B, C, D; //--------------------------------------------------------------------------------------------------- void _main() { cin >> A >> B >> C >> D; int ans = (B - A + 1) * (D - C + 1); int L = max(A, C), R = min(B, D); ans -= max(0, R - L + 1); cout << ans << endl; }