結果
| 問題 | 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;
}