Submission #473891

# Submission time Handle Problem Language Result Execution time Memory
473891 2021-09-16T11:27:07 Z BidoTeima Odašiljači (COCI20_odasiljaci) C++17
21 / 70
1000 ms 4684 KB
/// 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<50){
        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 time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 2 ms 332 KB Output is correct
3 Correct 455 ms 340 KB Output is correct
4 Execution timed out 1094 ms 332 KB Time limit exceeded
5 Execution timed out 1097 ms 332 KB Time limit exceeded
6 Execution timed out 1073 ms 1356 KB Time limit exceeded
7 Execution timed out 1095 ms 1356 KB Time limit exceeded
8 Execution timed out 1085 ms 3404 KB Time limit exceeded
9 Execution timed out 1074 ms 4428 KB Time limit exceeded
10 Execution timed out 1089 ms 4684 KB Time limit exceeded