제출 #1225451

#제출 시각아이디문제언어결과실행 시간메모리
1225451AlgorithmWarriorMobile (BOI12_mobile)C++20
0 / 100
514 ms66208 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;

void get_range(){
    int n,len;
    cin>>n>>len;
    int last_x=-1000000001;
    int i;
    for(i=1;i<=n;++i){
        int x,y;
        cin>>x>>y;
        if(x!=last_x){
            last_x=x;
            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()
{
    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...