はまやんはまやんはまやん

hamayanhamayan's blog

Integer Preference [ACL Beginner Contest B]

https://atcoder.jp/contests/abl/tasks/abl_b

解説

https://atcoder.jp/contests/abl/submissions/17050220

[A,B]と[C,D]の区間のANDを取ったときに、残る区間があるかという問題。
区間のANDを取りたい場面は結構あって、以下の手法が役に立つ。

[A,B]と[C,D]の区間のAND -> [max(A,C),min(B,D)]

ANDを取ったときに区間が残らない場合は、[4,2]みたいな変な感じになるので、ANDを取った[L,R]に対して、
L≦Rであるかを確認すれば区間が残るかが分かる。

ll A, B, C, D;
//---------------------------------------------------------------------------------------------------
void _main() {
    cin >> A >> B >> C >> D;

    ll L = max(A, C);
    ll R = min(B, D);

    if (L <= R) cout << "Yes" << endl;
    else cout << "No" << endl;
}