제출 #1249032

#제출 시각아이디문제언어결과실행 시간메모리
1249032PokemonMasterMobile (BOI12_mobile)C++20
4 / 100
574 ms20184 KiB
#include<bits/stdc++.h> using namespace std; double dist(double x1,double y1,double x2,double y2) { return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } double eq(double x1,double y1,double x2,double y2) { return (x1*x1+y1*y1-x2*x2-y2*y2)/(2.0*(x1-x2)); } signed main() { int n,l; cin>>n>>l; vector <double> x(n+1); vector <double> y(n+1); for(int i=1;i<=n;i++)cin>>x[i]>>y[i]; for(int i=1;i<=n;i++)y[i]=abs(y[i]); deque <int> stk; for(int i=1;i<=n;i++) { if(stk.size() && x[i]==x[stk.back()]) { if(y[i]>=y[stk.back()])continue; stk.pop_back(); } while(stk.size()>1 && eq(x[i],y[i],x[stk.back()],y[stk.back()])<eq(x[stk.back()],y[stk.back()],x[stk[stk.size()-2]],y[stk[stk.size()-2]]))stk.pop_back(); stk.push_back(i); } while(stk.size()>1 && eq(x[stk[0]],y[stk[0]],x[stk[1]],y[stk[1]])<0)stk.pop_front(); while(stk.size()>1 && eq(x[stk[stk.back()]],y[stk[stk.back()]],x[stk[stk.size()-2]],y[stk[stk.size()-2]])>l)stk.pop_back(); double mx=0; for(int i=0;i<stk.size();i++) { if(i) { double inr=eq(x[stk[i]],y[stk[i]],x[stk[i-1]],y[stk[i-1]]); if(inr<0 || inr>l)continue; mx=max(mx,dist(inr,0,x[stk[i]],y[stk[i]])); }else { mx=max(mx,dist(0,0,x[stk[i]],y[stk[i]])); } if(i<stk.size()-1) { double inr=eq(x[stk[i]],y[stk[i]],x[stk[i+1]],y[stk[i+1]]); if(inr<0 || inr>l)continue; mx=max(mx,dist(inr,0,x[stk[i]],y[stk[i]])); }else { mx=max(mx,dist(l,0,x[stk[i]],y[stk[i]])); } } cout<<fixed<<setprecision(6)<<mx; }
#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...