#include <iostream>
#include <cmath>
bool first_enclose_second(double a, double b, double c, double d)
{
if (a < b)
std::swap(a, b);
if (c < d)
std::swap(c, d);
if (c <= a)
return d <= b;
const auto ss = c * c + d * d;
const auto p = std::sqrt(ss - b * b);
const auto q = std::sqrt(ss - a * a);
return a * b - p * q >= c * d * 2;
}
int main()
{
std::cout << std::boolalpha;
std::cout << first_enclose_second(2, 2, 1, 1) << std::endl; // true
std::cout << first_enclose_second(1, 1, 2, 2) << std::endl; // false
std::cout << first_enclose_second(5, 5, 5.5, 1) << std::endl; // true
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgpib29sIGZpcnN0X2VuY2xvc2Vfc2Vjb25kKGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkKQp7CiAgIGlmIChhIDwgYikKICAgICAgc3RkOjpzd2FwKGEsIGIpOwoKICAgaWYgKGMgPCBkKQogICAgICBzdGQ6OnN3YXAoYywgZCk7CgogICBpZiAoYyA8PSBhKQogICAgICByZXR1cm4gZCA8PSBiOwoKICAgY29uc3QgYXV0byBzcyA9IGMgKiBjICsgZCAqIGQ7CiAgIGNvbnN0IGF1dG8gcCA9IHN0ZDo6c3FydChzcyAtIGIgKiBiKTsKICAgY29uc3QgYXV0byBxID0gc3RkOjpzcXJ0KHNzIC0gYSAqIGEpOwoKICAgcmV0dXJuIGEgKiBiIC0gcCAqIHEgPj0gYyAqIGQgKiAyOwp9CgppbnQgbWFpbigpCnsKICAgc3RkOjpjb3V0IDw8IHN0ZDo6Ym9vbGFscGhhOwogICBzdGQ6OmNvdXQgPDwgZmlyc3RfZW5jbG9zZV9zZWNvbmQoMiwgMiwgMSwgMSkgPDwgc3RkOjplbmRsOyAgICAvLyB0cnVlCiAgIHN0ZDo6Y291dCA8PCBmaXJzdF9lbmNsb3NlX3NlY29uZCgxLCAxLCAyLCAyKSA8PCBzdGQ6OmVuZGw7ICAgIC8vIGZhbHNlCiAgIHN0ZDo6Y291dCA8PCBmaXJzdF9lbmNsb3NlX3NlY29uZCg1LCA1LCA1LjUsIDEpIDw8IHN0ZDo6ZW5kbDsgIC8vIHRydWUKfQoK