제출 #633259

#제출 시각아이디문제언어결과실행 시간메모리
633259afatpotatoMobile (BOI12_mobile)C++14
0 / 100
1096 ms56804 KiB
#include <bits/stdc++.h>

using namespace std;

bool solve(double x);

vector<pair<double, double> > tower;
long long n, l;

int main() {
    cin >> n >> l;
    tower.resize(n);
    for (int i = 0; i < n; i++) {
        cin >> tower[i].first >> tower[i].second;
    }
    double low = 0;
    double high = 4e9;
    double ans = 0;

    while (high - low > 1e-4) {
        double mid = (low + high) / 2;
        if (solve(mid)) {
            ans = mid;
            high = mid;
        } else {
            low = mid;
        }
    }
    cout << fixed;
    cout << setprecision(9);
    cout << ans << endl;
}

bool solve(double x) {
    vector<pair<double, double> > v;
    for (int i = 0; i < n; i++) {


        if (tower[i].second > x) {
            continue;
        }

        double d = sqrt(x * x - tower[i].second * tower[i].second);
        if (tower[i].first + d < 0) {
            continue;
        }

        v.push_back(make_pair(max(tower[i].first - d, (double) 0), max(tower[i].first + d, (double) 0)));
    }

    sort(v.begin(), v.end());
    if (v[0].first > 0) {
        return false;
    }
    double r = v[0].second;
    for (int i = 1; i < v.size(); i++) {
        if (r < v[i].first) {
            return false;
        } else {
            r = max(r, v[i].second);
        }
    }
    if (r < l) {
        return false;
    }
    return true;
}

컴파일 시 표준 에러 (stderr) 메시지

mobile.cpp: In function 'bool solve(double)':
mobile.cpp:56:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<double, double> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |     for (int i = 1; i < v.size(); i++) {
      |                     ~~^~~~~~~~~~
#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...