Submission #1174336

#TimeUsernameProblemLanguageResultExecution timeMemory
1174336paskalisapoMobile (BOI12_mobile)C++20
0 / 100
1097 ms24620 KiB
#include<bits/stdc++.h>
using namespace std;
using dd = double;

struct trans {
    dd x , y , change;
};

dd change(dd x1, dd y1, dd x2, dd y2) {
    dd up = x2 * x2 + y2 * y2 - x1 * x1 - y1 * y1;
    dd down = 2 * (x2 - x1);
    return dd(up / down);
}

int main() {
    int n;
    dd l;
    cin >> n >> l;

    stack<trans>s;
    dd x ,y;
    cin >> x >> y;
    dd maxdist = (sqrt(x * x + y * y));
    s.push({x , y});



    for(int i = 1 ;i < n ;i++) {
        cin >> x >> y;
        dd xchange = 0;
        while(!s.empty()) {
            dd x2 = s.top().x;
            if(x == x2) {
                continue;
            }
            dd y2 = s.top().y;
            xchange = change(x , y , x2 ,y2);
            maxdist = max(maxdist, sqrt((x - xchange) * (x - xchange) + y * y));

            if(xchange < s.top().change) {
                s.pop();
            }    
            else {
                break;
            }
        }
        s.push({x , y , xchange});
    }

    while(s.top().change > l) {
        s.pop();
    }
    x = s.top().x;
    y = s.top().y;

    maxdist = max(maxdist, sqrt((x - l) * (x - l) + y * y));

    printf("%.6f\n", maxdist);

}
#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...