제출 #1225504

#제출 시각아이디문제언어결과실행 시간메모리
1225504AlgorithmWarriorMobile (BOI12_mobile)C++20
0 / 100
521 ms73828 KiB
#include <bits/stdc++.h> #define ld long double using namespace std; struct range{ ld x,y,l,r; }; ld special_inters(ld x1,ld y1,ld x2,ld y2){ return (x1*x1-x2*x2+y1*y1-y2*y2)/(2*(x1-x2)); } vector<range>range; int n,len; int const NMAX=1000005; struct point{ int x,y; }points[NMAX]; void read(){ cin>>n>>len; int i; for(i=1;i<=n;++i) cin>>points[i].x>>points[i].y; } void get_range(){ int i; for(i=1;i<=n;++i){ int x=points[i].x,y=abs(points[i].y); while(i<n && x==points[i+1].x){ ++i; if(y>abs(points[i].y)) y=abs(points[i].y); } while(!range.empty()){ auto [px,py,l,r]=range.back(); ld inters=special_inters(x,y,px,py); if(r<=inters) break; if(inters<=l) range.pop_back(); else{ range.back().r=inters; break; } } if(range.empty()) range.push_back({(ld)x,(ld)y,0,(ld)len}); else range.push_back({(ld)x,(ld)y,range.back().r,(ld)len}); } } ld dist(ld x1,ld y1,ld x2,ld y2){ return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } ld solve(){ ld mxm=0; for(auto [x,y,l,r] : range){ ld dst=dist(x,y,l,0); if(mxm<dst) mxm=dst; dst=dist(x,y,r,0); if(mxm<dst) mxm=dst; } return mxm; } int main() { read(); get_range(); cout<<fixed<<setprecision(6)<<solve(); 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...