Submission #464127

#TimeUsernameProblemLanguageResultExecution timeMemory
464127dqkMobile (BOI12_mobile)C++17
0 / 100
1095 ms109980 KiB
#include <bits/stdc++.h> int main() { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int n; double L; std::cin >> n >> L; std::vector<std::vector<int>> p(n, std::vector<int>(2, 0)); for (int i = 0; i < n; ++i) { std::cin >> p[i][0] >> p[i][1]; p[i][1] = abs(p[i][1]); } double d1 = sqrt(p[0][0] * p[0][0] + p[0][1] * p[0][1]); double d2 = sqrt((p[0][0] - L) * (p[0][0] - L) + p[0][1] * p[0][1]); double lo = 0, hi = std::max(d1, d2); while(hi - lo > 1e-4) { double mi = (lo + hi) / 2; std::vector<std::vector<double>> u; for (int i = 0; i < n; ++i) { double h = p[i][1]; if (h > mi) continue; double lf = p[i][0] - sqrt(mi * mi - h * h); double rt = p[i][0] + sqrt(mi * mi - h * h); if (rt < 0.0 || lf > L) continue; lf = std::max(lf, 0.0); rt = std::min(rt, L); u.push_back({lf, rt}); } sort(u.begin(), u.end()); double lf, rt; lf = rt = -1; bool ok = true; for (int i = 0; i < u.size() && ok; ++i) { if (i == 0) { lf = u[i][0]; rt = u[i][1]; } else { if (u[i][0] > rt) ok = false; rt = std::max(rt, u[i][1]); } } if (lf != 0 && rt != L) ok = false; if (ok) { hi = mi; } else { lo = mi; } } std::cout << lo << "\n"; return 0; }

Compilation message (stderr)

mobile.cpp: In function 'int main()':
mobile.cpp:36:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<double> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |         for (int i = 0; i < u.size() && ok; ++i) {
      |                         ~~^~~~~~~~~~
#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...