답안 #713774

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
713774 2023-03-23T03:34:26 Z magikrap Mobile (BOI12_mobile) C++14
0 / 100
776 ms 15924 KB
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <queue>
#include <map>
#include <cmath>
#include <iomanip>

#define ll long long
#define DBL_MAX 1.79769e+308
#define DBL_MIN -1.79769e+308

using namespace std;

ll N, L;
pair<ll, ll> arr[1000000];

bool check (double val) {
    // cout << endl;
    // cout << "val: " << val << endl;
    double left = DBL_MIN;
    double right = DBL_MAX;
    for (int i = 0; i < N; i++) {
        double y = (double) arr[i].second;
        double x = (double) arr[i].first;
        if (abs(y) > val) {
            return false;
        }
        double res = sqrt(val * val - y * y);
        // cout << fixed << setprecision(3) << "x: " << x << " y: " << y << " res: " << res << endl;
        if (x - res > left) {
            left = x - res;
        }
        if (x + res < right) {
            right = x + res;
        }
        if (left > right) {
            return false;
        }
        // cout << fixed << setprecision(3) << "left: " << left << " right: " << right << endl;
    }
    if (left < right && right >= 0 && left <= L) {
        return true;
    } else {
        return false;
    }
}

int main() {
    cin >> N >> L;
    for (int i = 0; i < N; i++) {
        ll x, y;
        cin >> x >> y;
        arr[i] = {x, y};
    }
    sort(arr, arr + N, [](pair<ll, ll> a, pair<ll, ll> b) {
        if (a.first == b.first) {
            return abs(a.second) < abs(b.second);
        } else {
            return a.first < b.first;
        }
    });
    // cout << "arr: " << endl;
    // for (int i = 0; i < N; i++) {
    //     cout << fixed << setprecision(3) << arr[i].first << " " << arr[i].second << endl;
    // }
    double ans = 2e9;
    for (double diff = 1e9; diff > 0.00005; diff /= 2) {
        if (check(ans - diff)) {
            ans -= diff;
        }
    }
    cout << fixed << setprecision(5) << ans << endl;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 212 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 340 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 48 ms 1360 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 52 ms 1512 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 53 ms 1660 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 90 ms 1816 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 84 ms 1832 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 327 ms 8080 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 390 ms 8040 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 350 ms 9652 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 478 ms 9680 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 400 ms 11332 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 594 ms 11244 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 469 ms 12812 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 623 ms 12744 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 607 ms 15920 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 776 ms 15924 KB Output isn't correct
2 Halted 0 ms 0 KB -