답안 #660610

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
660610 2022-11-22T15:37:10 Z SansPapyrus683 Mobile (BOI12_mobile) C++17
75 / 100
915 ms 35308 KB
#include <iostream>
#include <iomanip>
#include <cmath>
#include <vector>
#include <algorithm>

using std::cout;
using std::endl;
using std::vector;
using Point = std::pair<long long, long long>;

constexpr int PRECISION = 4;

double dist(const Point& p1, const Point& p2) {
    long long dx = p1.first - p2.first;
    long long dy = p1.second - p2.second;
    return std::sqrt(dx * dx + dy * dy);
}

/**
 * https://oj.uz/problem/view/BOI12_mobile
 * 2 10
 * 0 0
 * 11 1 should output something close to 5.545455
 */
int main() {
    int tower_num;
    int road_len;
    std::cin >> tower_num >> road_len;

    double max_dist = 0;
    vector<Point> towers(tower_num);
    for (Point& t : towers) {
        std::cin >> t.first >> t.second;
        max_dist = std::max(max_dist, dist({0, 0}, t));
    }
    std::sort(towers.begin(), towers.end());

    long long div_by = std::pow(10, PRECISION);
    long long lo = 0;
    long long hi = max_dist * div_by;
    long long valid = -1;
    while (lo <= hi) {
        long long mid = (lo + hi) / 2;
        double power = (double) mid / div_by;

        double at = 0;
        for (Point& t : towers) {
            double sqrt = std::sqrt(power * power - t.second * t.second);
            double start = -sqrt + t.first;
            double end = sqrt + t.first;
            if (start <= at) {
                at = std::max(at, end);
            }
        }

        if (at >= road_len) {
            valid = mid;
            hi = mid - 1;
        } else {
            lo = mid + 1;
        }
    }

    cout << std::fixed << std::setprecision(PRECISION)
         << (double) valid / div_by << endl;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 340 KB Output is correct
2 Correct 2 ms 340 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 2 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 340 KB Output is correct
2 Correct 4 ms 340 KB Output is correct
3 Correct 3 ms 340 KB Output is correct
4 Correct 6 ms 452 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 340 KB Output is correct
2 Correct 4 ms 340 KB Output is correct
3 Correct 3 ms 308 KB Output is correct
4 Correct 5 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 372 KB Output is correct
2 Correct 4 ms 340 KB Output is correct
3 Correct 3 ms 312 KB Output is correct
4 Correct 5 ms 340 KB Output is correct
5 Correct 3 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 55 ms 1464 KB Output is correct
2 Correct 53 ms 1492 KB Output is correct
3 Correct 40 ms 1756 KB Output is correct
4 Correct 63 ms 2616 KB Output is correct
5 Correct 25 ms 1464 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 50 ms 1516 KB Output is correct
2 Correct 46 ms 1364 KB Output is correct
3 Correct 56 ms 1492 KB Output is correct
4 Correct 80 ms 2676 KB Output is correct
5 Correct 73 ms 3040 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 40 ms 1620 KB Output is correct
2 Correct 56 ms 1576 KB Output is correct
3 Correct 52 ms 2500 KB Output is correct
4 Correct 94 ms 3760 KB Output is correct
5 Correct 59 ms 2696 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 78 ms 1852 KB Output is correct
2 Correct 71 ms 3252 KB Output is correct
3 Correct 58 ms 2892 KB Output is correct
4 Correct 93 ms 3756 KB Output is correct
5 Correct 71 ms 3108 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 71 ms 1748 KB Output is correct
2 Correct 67 ms 3264 KB Output is correct
3 Correct 57 ms 2892 KB Output is correct
4 Correct 98 ms 3768 KB Output is correct
5 Correct 70 ms 3116 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 258 ms 8124 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 371 ms 8116 KB Output is correct
2 Correct 415 ms 14776 KB Output is correct
3 Correct 295 ms 13880 KB Output is correct
4 Correct 443 ms 17452 KB Output is correct
5 Correct 400 ms 15424 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 308 ms 9696 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 446 ms 9684 KB Output is correct
2 Correct 512 ms 17732 KB Output is correct
3 Correct 352 ms 16464 KB Output is correct
4 Correct 554 ms 21424 KB Output is correct
5 Correct 458 ms 18660 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 347 ms 11248 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 521 ms 11252 KB Output is correct
2 Correct 565 ms 20592 KB Output is correct
3 Correct 426 ms 19660 KB Output is correct
4 Correct 655 ms 24648 KB Output is correct
5 Correct 533 ms 21652 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 397 ms 12816 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 597 ms 12824 KB Output is correct
2 Correct 631 ms 23388 KB Output is correct
3 Correct 482 ms 22284 KB Output is correct
4 Correct 770 ms 28372 KB Output is correct
5 Correct 597 ms 24324 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 502 ms 15956 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 768 ms 15956 KB Output is correct
2 Correct 814 ms 29172 KB Output is correct
3 Correct 619 ms 28236 KB Output is correct
4 Correct 915 ms 35308 KB Output is correct
5 Correct 763 ms 30676 KB Output is correct