Submission #1233828

#TimeUsernameProblemLanguageResultExecution timeMemory
1233828joeyddMobile (BOI12_mobile)C++20
100 / 100
485 ms16092 KiB
#include <cmath>
#include <iomanip>
#include <iostream>
using namespace std;

static const int MAXN = 1000000;
long long xs[MAXN], ys[MAXN];

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n;
  long long L;
  if (!(cin >> n >> L))
    return 0;
  for (int i = 0; i < n; ++i)
    cin >> xs[i] >> ys[i];

  double lo = 0, hi = 1.5e9;        // binary-search radius
  for (int it = 0; it < 60; ++it) { // 2^-60 < 1e-18, enough precision
    double mid = (lo + hi) * 0.5, cover = 0;
    for (int i = 0; i < n && cover < L; ++i) {
      if (ys[i] > mid)
        continue; // circle doesn't reach highway
      double dx = sqrt(mid * mid - 1.0 * ys[i] * ys[i]);
      double left = xs[i] - dx, right = xs[i] + dx;
      if (left <= cover)
        cover = max(cover, right);
    }
    (cover >= L ? hi : lo) = mid;
  }

  cout << fixed << setprecision(4) << hi << '\n';
  return 0;
}
#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...