답안 #486286

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
486286 2021-11-11T07:18:26 Z Nimbostratus Odašiljači (COCI20_odasiljaci) C++17
63 / 70
1000 ms 8980 KB
#include "bits/stdc++.h"
#define endl '\n'
constexpr int maxn = 1005;
constexpr int inf = 1e9;
constexpr int mod = 1e9+7;
using namespace std;
using lint = long long;
using pdd = pair<long double, long double>;
#define x first
#define y second
double eps = 0.00000001;

int n;
pdd pt[maxn];
vector<int> adj[maxn];
bool vis[maxn];

void dfs(int u) {
    vis[u] = true;
    for(int v : adj[u]) {
        if(vis[v])
            continue;
        dfs(v);
    }
}

bool eq(double d1, double d2) {
    return abs(d1 - d2) < eps;
}

bool inter(pdd& a, pdd& b, double r) {
    pdd mid = {(a.x + b.x) / 2, (a.y + b.y) / 2};
    double d1 = sqrt((mid.x - a.x) * (mid.x - a.x) + (mid.y - a.y) * (mid.y - a.y));
    double d2 = sqrt((mid.x - b.x) * (mid.x - b.x) + (mid.y - b.y) * (mid.y - b.y));
    return d1 < r && d2 < r;
}

bool check(double r) {
    for(int i = 0; i < n; i++) {
        vis[i] = false;
        adj[i].clear();
    }
    for(int i = 0; i < n; i++)
        for(int j = 1; j < n; j++)
            if(inter(pt[i], pt[j], r)) {
                adj[i].push_back(j);
                adj[j].push_back(i);
            }
    dfs(0);
    for(int i = 0; i < n; i++)
        if(!vis[i])
            return false;
    return true;
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> n;
    for(int i = 0; i < n; i++)
        cin >> pt[i].x >> pt[i].y;
    double l = 0, r = 1e9, m;
    while(!eq(l, r)) {
        m = (l + r) / 2;
        if(check(m))
            r = m;
        else
            l = m;
    }
    cout << setprecision(9) << fixed <<  l << endl;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 5 ms 332 KB Output is correct
4 Correct 7 ms 332 KB Output is correct
5 Execution timed out 1088 ms 460 KB Time limit exceeded
6 Correct 282 ms 2380 KB Output is correct
7 Correct 283 ms 2420 KB Output is correct
8 Correct 580 ms 6476 KB Output is correct
9 Correct 895 ms 8548 KB Output is correct
10 Correct 781 ms 8980 KB Output is correct