제출 #657978

#제출 시각아이디문제언어결과실행 시간메모리
657978chjiaoMobile (BOI12_mobile)C++14
0 / 100
591 ms15956 KiB
//Binary search the shortest length from the firehose #include <bits/stdc++.h> using namespace std; #define fastio ios_base::sync_with_stdio(false);cin.tie(0) #define mp make_pair #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define FOR(i,a,b) for(ll i=a;i<=b;i++) #define FORB(i,a,b) for(ll i=a;i>=b;i--) #define getbit(mask,i) ((mask>>(i))&1) #define getnum(i) (1<<(i)) #define endl "\n" #define sz(x) (int)size(x) #define mp make_pair using ll = long long; const ll MOD1 = 1e9+7; const ll MOD2 = 998244353; const ll MN = 1e5; const ll MAX = LLONG_MAX; double FLOAT_ERR = 1e-7; double first_true_float(double lo, double hi, function<bool(double)> f) { // if none of the values in the range work, return hi + 1 lo--; hi++; while (hi-lo > FLOAT_ERR) { double mid = (lo + hi) / 2.0f; if (f(mid)) { hi = mid; } else { lo = mid; } } return lo; } int main() { fastio; //freopen("XXX.in","r",stdin); // freopen("XXX.out","w",stdout); int N; double L; cin >> N >> L; vector<pair<double,double>> input(N); for(int i=0; i<N; i++){ cin >> input[i].first >> input[i].second; } sort(input.begin(), input.end()); cout << setprecision(7)<<first_true_float(1, 1.5e9, [&](double x){ double left = 0; FOR(i,0,N-1){ if(x*x < input[i].second*input[i].second){ continue; } double diviation = sqrt(x*x - input[i].second*input[i].second); if(input[i].first+diviation < left) continue; if((input[i].first-diviation) <= left){ left = input[i].first+diviation; } else { return false; } } return left >= L; }) << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...