Submission #486287

#TimeUsernameProblemLanguageResultExecution timeMemory
486287NimbostratusOdašiljači (COCI20_odasiljaci)C++17
63 / 70
1086 ms8968 KiB
#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<double, 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; }
#Verdict Execution timeMemoryGrader output
Fetching results...