結果
問題 | No.306 さいたま2008 |
ユーザー |
|
提出日時 | 2015-12-22 01:34:32 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 2,000 ms |
コード長 | 670 bytes |
コンパイル時間 | 1,341 ms |
コンパイル使用メモリ | 160,316 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2025-02-14 12:11:53 |
合計ジャッジ時間 | 2,173 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 26 |
ソースコード
#include <bits/stdc++.h> using namespace std; typedef long double D; D TernarySearchLowestF(D L, D R, function<D(D)> F, D eps = 1e-9){ D l = L, r = R; while(l < r && (r - l) > eps){ D l2 = l + (r - l) / 3, r2 = r - (r - l) / 3; if(F(r2) < F(l2)) l = l2; else r = r2; } return (l+r)/2; } int main(){ int xa,ya,xb,yb; cin >> xa >> ya >> xb >> yb; if(ya > yb){ swap(xa,xb);swap(ya,yb); } D xa2 = xa*xa, xb2 = xb*xb; auto f = [&](D yp)->D{ return sqrt(xa2 + (ya-yp)*(ya-yp)) + sqrt(xb2 + (yb-yp)*(yb-yp)); }; D res = TernarySearchLowestF(0.+ya, 0.+yb, f); cout << setprecision(12) << res << endl; }