답안 #873845

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
873845 2023-11-16T00:38:09 Z tvladm2009 Mobile (BOI12_mobile) C++17
12 / 100
157 ms 16356 KB
#include <bits/stdc++.h>

using i64 = long long;
using ld = double;

ld cross(std::pair<int, int> a, std::pair<int, int> b) {
    int x1 = a.first, x2 = b.first, y1 = a.second, y2 = b.second;
    return 1.0 * (1ll * x2 * x2 + y2 * y2 - 1ll * x1 * x1 - 1ll * y1 * y1) / (2.0 * (x2 - x1));
}

ld solve(ld s, ld e, std::pair<int, int> t) {
    return std::max(std::hypot(s - t.first, t.second), std::hypot(e - t.first, t.second));
}

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);

    std::cout << std::fixed << std::setprecision(6);

    int n, L;
    std::cin >> n >> L;
    std::vector<std::pair<int, int>> a(n);
    for (int i = 0; i < n; i++) {
        std::cin >> a[i].first >> a[i].second;
        a[i].second = std::abs(a[i].second);
    }
    std::sort(a.begin(), a.end());
    std::deque<std::pair<int, int>> st;
    for (int i = 0; i < n; i++) {
        int j = i;
        while (j < n && a[j].first == a[i].first) {
            j++;
        }
        while (st.size() >= 2 && cross(st[st.size() - 2], st.back()) > cross(st.back(), a[i])) {
            st.pop_back();
        }
        st.push_back(a[i]);
        i = j - 1;
    }

    ld answer = 0;
    while (st.size() >= 2 && cross(st[0], st[1]) < 0) {
        st.pop_front();
    }
    while (st.size() >= 2 && cross(st[st.size() - 2], st.back()) > L) {
        st.pop_back();
    }
    answer = std::max(answer, solve(0, cross(st[0], st[1]), st[0]));
    answer = std::max(answer, solve(cross(st[st.size() - 2], st.back()), L, st.back()));
    for (int i = 1; i < st.size() - 1; i++) {
        answer = std::max(answer, solve(cross(st[i - 1], st[i]), cross(st[i], st[i + 1]), st[i]));
    }
    std::cout << answer << "\n";
    return 0;
}

Compilation message

mobile.cpp: In function 'int main()':
mobile.cpp:51:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::deque<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |     for (int i = 1; i < st.size() - 1; i++) {
      |                     ~~^~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 500 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 1 ms 500 KB Output is correct
4 Incorrect 2 ms 344 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 1 ms 412 KB Output is correct
4 Incorrect 1 ms 348 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Incorrect 1 ms 348 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 1112 KB Output is correct
2 Incorrect 11 ms 860 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 11 ms 1112 KB Output is correct
2 Correct 11 ms 1024 KB Output is correct
3 Incorrect 13 ms 860 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 14 ms 1880 KB Output is correct
2 Incorrect 12 ms 860 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 15 ms 1112 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 18 ms 1768 KB Output is correct
2 Incorrect 15 ms 1116 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 88 ms 8456 KB Output is correct
2 Correct 74 ms 4360 KB Output is correct
3 Correct 71 ms 4184 KB Output is correct
4 Incorrect 91 ms 4188 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 75 ms 4188 KB Output is correct
2 Correct 79 ms 4616 KB Output is correct
3 Incorrect 64 ms 5128 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 92 ms 10020 KB Output is correct
2 Correct 87 ms 4956 KB Output is correct
3 Correct 87 ms 5144 KB Output is correct
4 Incorrect 108 ms 4956 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 89 ms 4956 KB Output is correct
2 Correct 100 ms 5400 KB Output is correct
3 Correct 78 ms 5664 KB Output is correct
4 Incorrect 109 ms 4952 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 106 ms 11604 KB Output is correct
2 Correct 105 ms 5724 KB Output is correct
3 Correct 99 ms 5724 KB Output is correct
4 Incorrect 127 ms 5720 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 105 ms 5724 KB Output is correct
2 Correct 108 ms 6184 KB Output is correct
3 Incorrect 96 ms 6736 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 126 ms 13136 KB Output is correct
2 Correct 115 ms 6488 KB Output is correct
3 Correct 131 ms 6648 KB Output is correct
4 Incorrect 145 ms 6648 KB Output isn't correct
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 120 ms 6492 KB Output is correct
2 Correct 125 ms 6996 KB Output is correct
3 Incorrect 103 ms 7508 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 151 ms 16356 KB Output is correct
2 Correct 145 ms 8284 KB Output is correct
3 Runtime error 147 ms 16208 KB Execution killed with signal 11
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 150 ms 8284 KB Output is correct
2 Correct 157 ms 8784 KB Output is correct
3 Incorrect 129 ms 9316 KB Output isn't correct
4 Halted 0 ms 0 KB -