제출 #1139043

#제출 시각아이디문제언어결과실행 시간메모리
1139043monostackMobile (BOI12_mobile)C++20
15 / 100
297 ms33232 KiB
#include<bits/stdc++.h> #include <cstdio> using namespace std; #define int long long #define ld long double #define ff first #define ss second #define INF -1e18 #define mp make_pair struct point{ ld x,y; friend istream& operator>>(istream& in, point& p){ in>>p.x>>p.y; return in; } }; int n,k; ld d(point a, point b){ return sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y)); } ld f(point a, point b){ ld res = ((b.y)*(b.y) - (a.y)*(a.y))/(2*(b.x - a.x)) + (a.x + b.x)/2; return res; } int32_t main(){ #ifdef LOCAL_JUDGE freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif ios_base::sync_with_stdio(0); cin.tie(nullptr); cin>>n>>k; ld ans = INF; deque<point> needed; for(int i = 0; i < n; i++){ point cur; cin>>cur; cur.y = abs(cur.y); if((int)needed.size() && needed.back().x == cur.x) continue; while((int)needed.size() > 1 && f(needed[(int)needed.size() - 2], needed.back()) > f(needed.back(), cur)){ needed.pop_back(); } needed.push_back(cur); } while((int)needed.size() > 1 && f(needed[0],needed[1]) < 0) needed.pop_front(); while((int)needed.size() > 1 && f(needed[(int)needed.size()-2],needed.back())>k) needed.pop_back(); for(int i = 0; i < (int)needed.size(); i++){ ld x_1=0,x_2=k; if(i != 0){ x_1 =f(needed[i],needed[i-1]); } if(i != (int)needed.size() - 1){ x_2 = f(needed[i], needed[i+1]); } if(x_1 < 0 || x_1 > k || x_2 < 0 || x_2 > k) continue; ans = max({ans, d(needed[i],{x_1,0}), d(needed[i],{x_2,0})}); } cout<<fixed<<setprecision(6)<<ans; }
#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...