Submission #473890

#TimeUsernameProblemLanguageResultExecution timeMemory
473890BidoTeimaOdašiljači (COCI20_odasiljaci)C++17
21 / 70
1094 ms4684 KiB
/// isA AC #include <bits/stdc++.h> using namespace std; using ll = long long; void ACPLS() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); } #define tc \ int tttttt,subtask; \ cin >> tttttt /*>> subtask*/; \ while (tttttt--) #define sumrange(l, r, arr) (l == 0 ? arr[r] : arr[r] - arr[l - 1]) #define all(v) v.begin(), v.end() bool touch(long double x1, long double y1, long double x2, long double y2, long double r1, long double r2) { long double distSq = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2); long double radSumSq = (r1 + r2) * (r1 + r2); if (radSumSq>=distSq) return 1; return 0; } vector<int>adj[(int)1e3+5]; vector<bool>vis(1e3+3,0); bool dfs(int curnode,int m){ if(curnode==m) return 1; if(vis[curnode]) return 0; vis[curnode]=1; bool ret=0; for(int child:adj[curnode]){ ret|=dfs(child,m); } return ret; } int n; pair< double, double> a[(int)1e3+5]; bool check( double r){ for(int i = 0; i <= 1e3; i++) adj[i]=vector<int>(); vis=vector<bool>(1e3+3,0); for(int i = 0; i < n; i++){ for(int j = i+1; j < n; j++){ if(touch(a[i].first,a[i].second, a[j].first,a[j].second,r,r)){ adj[i].push_back(j); adj[j].push_back(i); } } } bool ok=1; for(int i = 0; i < n; i++){ for(int j = i+1; j < n; j++){ vis=vector<bool>(n+3,0); ok&=dfs(i,j); } } return ok; } int main() { ACPLS(); cin>>n; for(int i = 0; i < n; i++) cin>>a[i].first>>a[i].second; double lo=0,hi=1e9,ans=hi; int it=0; while(it<60){ double mid = (lo+hi)*0.5; if(check(mid)){ ans=mid; hi=mid; } else lo=mid; ++it; } cout<<fixed<<setprecision(6); cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...