답안 #967256

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
967256 2024-04-21T16:10:46 Z v_matei Mobile (BOI12_mobile) C++17
0 / 100
1000 ms 64688 KB
#include <bits/stdc++.h>
#include <cmath>
#include <iomanip>

#define ll long long
#define ull unsigned long long
#define pdd std::pair<double, double>

#define NMAX 1e6
#define LMAX 1e9
#define INF 3e9

struct Tower {
  double x, y;
};
struct Seg {
  double st, fn;
};
double n, l;
std::vector<Tower> s;

void citire() {
  std::cin >> n >> l;
  s.resize(n);
  for (int i = 0; i < n; i++) {
    std::cin >> s[i].x >> s[i].y;
  }
}

double b_search(double lo, double hi, std::function<bool(double)> f) {
  // std::cout << "a\n";
  for (int i = 1; i <= 300; i++) {
    double mid = (lo + hi) / 2;
    if (f(mid))
      hi = mid;
    else
      lo = mid;
  }
  return lo;
}

bool find_point(double k) {
  std::vector<Seg> segs;
  for (Tower &it : s) {
    if (k * k < it.y * it.y)
      return 0;
    double max_dx = sqrt(k * k - it.y * it.y);
    segs.push_back({it.x - max_dx, it.x + max_dx});
  }
  Seg curr_inter = {-INF, INF};
  for (Seg &it : segs) {
    if (it.fn < curr_inter.st || it.st > curr_inter.fn)
      return 0;
    if (it.st > curr_inter.fn)
      return 0;
    if (it.st >= curr_inter.st) {
      curr_inter.st = it.st;
    }
    if (it.fn <= curr_inter.fn) {
      curr_inter.fn = it.fn;
    }
  }
  return 1;
}

int main() {
  citire();
  // std::cout << "out\n";
  double k = b_search(0, INF, find_point);
  std::cout << std::setprecision(7) << k;
  return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 348 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 11 ms 604 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 26 ms 776 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 26 ms 760 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 27 ms 776 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 513 ms 5808 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 522 ms 5920 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 569 ms 6204 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 661 ms 7320 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 651 ms 7292 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1040 ms 29008 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1049 ms 33000 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1054 ms 42436 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1025 ms 46220 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1008 ms 46600 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1022 ms 50976 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1039 ms 50368 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1008 ms 56728 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1048 ms 56872 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1041 ms 64688 KB Time limit exceeded
2 Halted 0 ms 0 KB -