Submission #1261296

#TimeUsernameProblemLanguageResultExecution timeMemory
1261296MisterReaperMobile (BOI12_mobile)C++17
0 / 100
378 ms20208 KiB
// File A.cpp created on 20.08.2025 at 00:54:27 #include <bits/stdc++.h> using i64 = long long; using ld = long double; #ifdef DEBUG #include "/home/ahmetalp/Desktop/Workplace/debug.h" #else #define debug(...) void(23) #endif ld sq(ld x) { return x * x; } i64 sq(i64 x) { return x * x; } ld inter_2d(i64 x1, i64 y1, i64 x2, i64 y2) { return ld(sq(x1) + sq(y1) - sq(x2) - sq(y2)) / (2 * (x1 - x2)); } int main() { std::ios::sync_with_stdio(false); std::cin.tie(nullptr); std::cout << std::fixed << std::setprecision(9); int N, M; std::cin >> N >> M; std::vector<std::array<i64, 2>> A(N); for (int i = 0; i < N; ++i) { std::cin >> A[i][0] >> A[i][1]; } auto inter = [&](auto lhs, auto rhs) -> ld { return inter_2d(A[lhs][0], A[lhs][1], A[rhs][0], A[rhs][1]); }; std::deque<int> stk; for (int i = 0; i < N; ++i) { while (stk.size() > 1 && inter(stk.end()[-2], stk.back()) > inter(stk.back(), i)) { stk.pop_back(); } stk.emplace_back(i); } while (stk.size() > 1 && inter(stk[0], stk[1]) < 0) { stk.pop_front(); } while (stk.size() > 1 && inter(stk.end()[-2], stk.back()) > M) { stk.pop_back(); } ld res = 0; for (int i = 0; i < stk.size(); ++i) { ld l = (i == 0 ? 0 : inter(stk[i - 1], stk[i])); ld r = (i + 1 == stk.size() ? M : inter(stk[i], stk[i + 1])); res = std::max(res, std::sqrt(sq(A[stk[i]][1]) + sq(A[stk[i]][0] - l))); res = std::max(res, std::sqrt(sq(A[stk[i]][1]) + sq(A[stk[i]][0] - r))); } std::cout << res << '\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...