제출 #473894

#제출 시각아이디문제언어결과실행 시간메모리
473894BidoTeimaOdašiljači (COCI20_odasiljaci)C++17
0 / 70
1093 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( double x1, double y1, double x2, double y2, double r1, double r2) { double distSq = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2); 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 <= n; i++) adj[i]=vector<int>(); vis=vector<bool>(n+5,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<40){ 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...