結果
問題 |
No.306 さいたま2008
|
ユーザー |
![]() |
提出日時 | 2015-11-24 02:59:05 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 723 bytes |
コンパイル時間 | 527 ms |
コンパイル使用メモリ | 60,284 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-13 17:19:59 |
合計ジャッジ時間 | 1,268 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 21 WA * 2 |
ソースコード
#include <iostream> #include <cstdio> #include <cmath> #include <cassert> using namespace std; int main(){ int X_a,X_b; int Y_a,Y_b; cin >> X_a >> Y_a; cin >> X_b >> Y_b; assert(0 < X_a && X_a < 1000); assert(0 < Y_a && Y_a < 1000); assert(0 < X_b && X_b < 1000); assert(0 < Y_b && Y_b < 1000); auto func = [&](long double y){ double ret = 0; ret += sqrt(X_a*X_a + (Y_a-y)*(Y_a-y)); ret += sqrt(X_b*X_b + (Y_b-y)*(Y_b-y)); return ret; }; long double lb = min(Y_a, Y_b); long double ub = max(Y_a, Y_b); while(ub-lb > 1e-9){ long double l = (2*lb + ub)/3.0; long double r = (lb + 2*ub)/3.0; if(func(l)>func(r)){ lb = l; }else{ ub = r; } } printf("%.12f\n", (double)lb); return 0; }