답안 #513033

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
513033 2022-01-17T01:21:38 Z KoD Odašiljači (COCI20_odasiljaci) C++17
56 / 70
1000 ms 332 KB
#include <bits/stdc++.h>

using std::vector;
using std::array;
using std::pair;
using std::tuple;

using i64 = std::int64_t;

struct SimpleQueue {
    int idx;
    vector<int> data;
    SimpleQueue(const int n) : idx(0) { data.reserve(n); }
    void clear() {
        idx = 0;
        data.clear();
    }
    void push(const int x) {
        data.push_back(x);
    }
    int pop() {
        return data[idx++];
    }
    bool empty() const {
        return idx == (int)data.size();
    }
};

int main() {
    std::ios_base::sync_with_stdio(false);
    std::cin.tie(nullptr);
    int N;
    std::cin >> N;
    vector<double> X(N), Y(N);
    for (int i = 0; i < N; ++i) {
        std::cin >> X[i] >> Y[i];
    }
    vector<char> reach(N);
    SimpleQueue que(N);
    const auto check = [&](const double thres) {
        std::fill(reach.begin(), reach.end(), false);
        que.clear();
        const auto push = [&](const int u) {
            if (!reach[u]) {
                reach[u] = true;
                que.push(u);
            }
        };
        push(0);
        while (!que.empty()) {
            const int u = que.pop();
            for (int v = 0; v < N; ++v) {
                if (std::hypot(X[u] - X[v], Y[u]- Y[v]) <= 2.0 * thres) {
                    push(v);
                }
            }
        }
        return std::count(reach.begin(), reach.end(), true) == N;
    };
    double ok = 2.0 * 1e9, ng = 0.0;
    for (int step = 0; step < 55; ++step) {
        const double md = (ok + ng) / 2.0;
        (check(md) ? ok : ng) = md;
    }
    std::cout << std::fixed << std::setprecision(20);
    std::cout << ok << '\n';
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 204 KB Output is correct
2 Correct 0 ms 204 KB Output is correct
3 Correct 3 ms 304 KB Output is correct
4 Correct 7 ms 204 KB Output is correct
5 Correct 13 ms 312 KB Output is correct
6 Correct 232 ms 324 KB Output is correct
7 Correct 325 ms 304 KB Output is correct
8 Correct 700 ms 316 KB Output is correct
9 Execution timed out 1083 ms 204 KB Time limit exceeded
10 Execution timed out 1087 ms 332 KB Time limit exceeded