Submission #658004

#TimeUsernameProblemLanguageResultExecution timeMemory
658004chjiaoMobile (BOI12_mobile)C++14
100 / 100
478 ms31444 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; long double FLOAT_ERR = 1e-5; long double first_true_float(long double lo, long double hi, function<bool(long double)> f) { // if none of the values in the range work, return hi + 1 lo--; hi++; while (hi-lo > FLOAT_ERR) { long 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); ll N; ll L; cin >> N >> L; vector<pair<ll,ll>> input(N); for(int i=0; i<N; i++){ cin >> input[i].first >> input[i].second; } // sort(input.begin(), input.end()); cout << fixed << setprecision(6)<<first_true_float(1, 1.5e9, [&](long double x){ long double left = 0; for(auto cell:input){ if(x*x < cell.second*cell.second){ continue; } long double diviation = sqrt(x*x - cell.second*cell.second); if((cell.first-diviation) <= left){ left =max(left, cell.first+diviation); } } 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...