제출 #854453

#제출 시각아이디문제언어결과실행 시간메모리
854453vjudge1Odašiljači (COCI20_odasiljaci)C++17
70 / 70
915 ms62968 KiB
#ifndef Local #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #endif #include <bits/stdc++.h> #define int long long #define pb push_back #define lim 100000 using namespace std; const int mod=1000000007ll; int c; int parent[1000]; int find(int i){ if(parent[i]==i){ return i; } return parent[i]=find(parent[i]); } void unite(int i,int j){ int x=find(i),y=find(j); if(x!=y){ c--; parent[y]=x; } } #define pdd pair<double,double> double pis(pdd&x,pdd&y){ double X=abs(x.first-y.first); double Y=abs(x.second-y.second); return sqrt(X*X+Y*Y)/2; } void solve(){ int n; cin>>n; c=n; for(int i=0;i<n;i++)parent[i]=i; pdd a[n]; for(int i=0;i<n;i++){ cin>>a[i].first>>a[i].second; } set<pair<double,pair<int,int>>>all; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ if(i!=j){ all.insert({pis(a[i],a[j]),{i,j}}); } } } double last=0; while(c!=1&&all.size()){ auto p=*all.begin(); last=p.first; unite(p.second.first,p.second.second); all.erase(p); } //cerr<<c<<"\n"; cout<<setprecision(15)<<last<<"\n"; } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL);cout.tie(NULL); #ifdef Local freopen("in","r",stdin); freopen("out","w",stdout); #endif solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...