Submission #873843

#TimeUsernameProblemLanguageResultExecution timeMemory
873843tvladm2009Mobile (BOI12_mobile)C++17
0 / 100
233 ms31052 KiB
#include <bits/stdc++.h> using i64 = long long; using ld = long double; ld cross(std::pair<int, int> a, std::pair<int, int> b) { int x1 = a.first, x2 = b.first, y1 = a.second, y2 = b.second; return 1.0 * (1ll * x2 * x2 + y2 * y2 - 1ll * x1 * x1 - 1ll * y1 * y1) / (2.0 * (x2 - x1)); } ld solve(ld s, ld e, std::pair<int, int> t) { return std::max(std::hypot(s - t.first, t.second), std::hypot(e - t.first, t.second)); } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout << std::fixed << std::setprecision(10); int n, L; std::cin >> n >> L; std::vector<std::pair<int, int>> a(n); for (int i = 0; i < n; i++) { std::cin >> a[i].first >> a[i].second; } std::sort(a.begin(), a.end()); std::deque<std::pair<int, int>> st; for (int i = 0; i < n; i++) { int j = i; while (j < n && a[j].first == a[i].first) { j++; } while (st.size() >= 2 && cross(st[st.size() - 2], st.back()) > cross(st.back(), a[i])) { st.pop_back(); } st.push_back(a[i]); i = j - 1; } ld answer = 0; while (st.size() >= 2 && cross(st[0], st[1]) < 0) { st.pop_front(); } while (st.size() >= 2 && cross(st[st.size() - 2], st.back()) > L) { st.pop_back(); } answer = std::max(answer, solve(0, cross(st[0], st[1]), st[0])); answer = std::max(answer, solve(cross(st[st.size() - 2], st.back()), L, st.back())); for (int i = 1; i < st.size() - 1; i++) { answer = std::max(answer, solve(cross(st[i - 1], st[i]), cross(st[i], st[i + 1]), st[i])); } std::cout << answer << "\n"; return 0; }

Compilation message (stderr)

mobile.cpp: In function 'int main()':
mobile.cpp:50:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |     for (int i = 1; i < st.size() - 1; 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...