https://atcoder.jp/contests/panasonic2020/tasks/panasonic2020_c
解説
https://atcoder.jp/contests/panasonic2020/submissions/10895357
sqrt(a) + sqrt(b) < sqrt(c)を普通に比較することでも通すことができる。
B問題でWAをもらってこの解法に警戒したが、念のためlong doubleにしてEPSをつけて祈ったら通った。
その場合は、以下のことを行う。
- long doubleを使う
- EPSを適切に設定して比較に使う(誤差対策でA < BはA < B - EPSとするテンプレがある)
より安全な解法として、全部整数にして比較する解法がある。
こちらの解説は、公式解説に任せることにする。
(そんなに難しくない。高校1年くらいの数学知識があれば大丈夫)
using ld = long double; ld a, b, c; const ld EPS = 1e-14; //--------------------------------------------------------------------------------------------------- void _main() { cin >> a >> b >> c; if (sqrtl(a) + sqrtl(b) < sqrtl(c) - EPS) cout << "Yes" << endl; else cout << "No" << endl; }