Submission #1063901

#TimeUsernameProblemLanguageResultExecution timeMemory
1063901davieduMobile (BOI12_mobile)C++17
0 / 100
128 ms13392 KiB
#include <bits/stdc++.h> using namespace std; #define fastio ios_base::sync_with_stdio(0); cin.tie(0) #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define ll long long #define ld long double struct P{ ll x, y; }; void dbg_out() { cerr << endl; } template <typename H, typename... T> void dbg_out(H h, T... t) { cerr << ' ' << h; dbg_out(t...); } #define dbg(...) { cerr << #__VA_ARGS__ << ':'; dbg_out(__VA_ARGS__); } ld border(ld x, ld y, ld a, ld b){ return (a*a + b*b - x*x - y*y) / (2*a - 2*x); } ld dist(ld x, ld y, ld point){ return sqrtl(y*y + (point-x)*(point-x)); } signed main(){ fastio; int n, r; cin >> n >> r; stack<pair<int, int>> st; int a, b, x, y; int last_x=-1; for (int i=0; i<n; i++){ cin >> a >> b; if (b < 0) b = -b; if (a == last_x) continue; last_x = a; while ((int)st.size() > 1){ tie(x, y) = st.top(); st.pop(); // if prev is not a useless point, put it back and stop if (border(x, y, a, b) < border(st.top().first, st.top().second, a, b)){ st.push({x, y}); break; } } st.push({a, b}); } ld ans=0; ld right=r; while ((int)st.size() > 1){ tie(a, b) = st.top(); st.pop(); tie(x, y) = st.top(); ld left = border(x, y, a, b); if (left >= right) continue; if (right >= 0 && right <= r) ans = max(ans, dist(a, b, right)); if (left >= 0 && left <= r) ans = max(ans, dist(a, b, left)); right = left; } tie(a, b) = st.top(); if (right >= 0) { ans = max(ans, dist(a, b, right)); ans = max(ans, dist(a, b, 0)); } cout << fixed << setprecision(13); cout << ans << '\n'; }
#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...