Submission #876099

#TimeUsernameProblemLanguageResultExecution timeMemory
876099DanetOdašiljači (COCI20_odasiljaci)C++14
70 / 70
181 ms604 KiB
#include<bits/stdc++.h> using namespace std; #pragma GCC optimize("O3") #define tof_io ios_base::sync_with_stdio(false);cin.tie(0) , cout.tie(0); #define double long double #define int long long #define pb push_back #define all(x) x.begin(),x.end() #define endl '\n' #define sz(x) x.size() const int mod = 1e9 + 7; //998244353 1e9+7 1e9+9 const int N = 2e4 + 1; const int lg = 23; const int eps = 1e-9; const int inf = 1e9; int fac[N]; int inv[N]; int n, timer = 0; double x[N], y[N]; bool vis[N]; double ans = 0; int dnt_pow (int a, int b, int md = mod){int ans = 1; while(b){if(b&1){ans = (a*ans)%md;}a = (a*a)%md;b >>= 1;}return ans ;} void dnt_bld (){fac[0] = 1; inv[0] = dnt_pow(fac[0],mod-2) ;for(int i = 1 ; i < N ; i++) {fac[i] = (fac[i-1] * i) % mod;inv[i] = dnt_pow( fac[i] , mod-2);}} int dnt_ncr (int r,int n){if(r>n) return 0; return fac[n] * inv[r] % mod * inv[n-r] % mod;} void dfs(int v, double r) { if (vis[v]) return; timer++; vis[v] = 1; for (int i = 0; i < n; i++) { if (i != v and vis[i] == 0) { if((x[i] - x[v]) * (x[i] - x[v]) + (y[i] - y[v]) * (y[i] - y[v]) <= (r * r + 2 * r * r + r * r)) { dfs(i,r); } } } } int32_t main() { cin >> n; for (int i = 0; i < n; i++) { cin >> x[i] >> y[i]; } double l = 0; double r = inf; for (int i = 0; i <= 64; i++) { double mid = (l + r) / 2.0; timer = 0; dfs(0 , mid); if (timer == n) { r = mid - eps; ans = mid; } else { l = mid + eps; } for (int i = 0; i < n; i++) vis[i] = 0; } cout << fixed << setprecision(6) << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...