CSES - Aalto Competitive Programming 2024 - wk10 - Mon - Results
Submission details
Task:6G network
Sender:AleksandrPolitov
Submission time:2024-11-11 16:38:35 +0200
Language:C++ (C++20)
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.00 sdetails
#7ACCEPTED0.00 sdetails
#8ACCEPTED0.00 sdetails
#9ACCEPTED0.00 sdetails
#10ACCEPTED0.00 sdetails
#11ACCEPTED0.00 sdetails
#12ACCEPTED0.00 sdetails
#13ACCEPTED0.00 sdetails
#14ACCEPTED0.00 sdetails
#15ACCEPTED0.00 sdetails
#16ACCEPTED0.00 sdetails
#17ACCEPTED0.00 sdetails
#18ACCEPTED0.00 sdetails
#19ACCEPTED0.00 sdetails
#20ACCEPTED0.00 sdetails
#21ACCEPTED0.00 sdetails
#22ACCEPTED0.00 sdetails
#23ACCEPTED0.00 sdetails
#24ACCEPTED0.00 sdetails
#25ACCEPTED0.00 sdetails
#26ACCEPTED0.00 sdetails
#27ACCEPTED0.00 sdetails
#28ACCEPTED0.00 sdetails
#29ACCEPTED0.00 sdetails
#30ACCEPTED0.00 sdetails
#31ACCEPTED0.02 sdetails
#32ACCEPTED0.02 sdetails
#33ACCEPTED0.02 sdetails
#34ACCEPTED0.02 sdetails
#35ACCEPTED0.02 sdetails
#36ACCEPTED0.02 sdetails
#37ACCEPTED0.02 sdetails
#38ACCEPTED0.02 sdetails
#39ACCEPTED0.01 sdetails
#40ACCEPTED0.02 sdetails
#41ACCEPTED0.05 sdetails
#42ACCEPTED0.05 sdetails
#43ACCEPTED0.05 sdetails
#44ACCEPTED0.05 sdetails
#45ACCEPTED0.05 sdetails
#46ACCEPTED0.05 sdetails
#47ACCEPTED0.05 sdetails
#48ACCEPTED0.05 sdetails
#49ACCEPTED0.05 sdetails
#50ACCEPTED0.05 sdetails
#51ACCEPTED0.30 sdetails
#52ACCEPTED0.30 sdetails
#53ACCEPTED0.30 sdetails
#54ACCEPTED0.30 sdetails
#55ACCEPTED0.30 sdetails
#56ACCEPTED0.30 sdetails
#57ACCEPTED0.30 sdetails
#58ACCEPTED0.29 sdetails
#59ACCEPTED0.30 sdetails
#60ACCEPTED0.29 sdetails
#61ACCEPTED1.17 sdetails
#62ACCEPTED1.19 sdetails
#63ACCEPTED1.19 sdetails
#64ACCEPTED1.17 sdetails
#65ACCEPTED1.20 sdetails

Code

#ifdef ONPC
    #define _GLIBCXX_DEBUG
#endif
#include <bits/stdc++.h>

#define char unsigned char
#define rep(i, a, b) for(int i=a; i< (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define eb emplace_back
#define mp make_pair
#define mt make_tuple
#define fi first
#define se second
#define pb push_back

#define LSOne(S) ((S) & -(S))

using namespace std;
// mt19937 rnd(239);
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());

template <typename T> int sgn(T x) { return (T(0) < x) - (x < T(0)); }
typedef long double T;
typedef complex<T> pt;
#define X real()
#define Y imag()

template<class T>
istream& operator>> (istream& is, complex<T>& p) {
    T value;
    is >> value;
    p.real(value);
    is >> value;
    p.imag(value);
    return is;
}

typedef long long ll;
typedef long double ld;

using pi = pair<ll, ll>;
using vi = vector<ll>;
template <class T>
using pq = priority_queue<T>;
template <class T>
using pqg = priority_queue<T, vector<T>, greater<T>>;

int popcnt(int x) { return __builtin_popcount(x); }
int popcnt(ll x) { return __builtin_popcountll(x); }

#define MIN(v) *min_element(all(v))
#define MAX(v) *max_element(all(v))
#define LB(c, x) distance((c).begin(), lower_bound(all(c), (x)))
#define UB(c, x) distance((c).begin(), upper_bound(all(c), (x)))

void __print(int x) {cerr << x;}
void __print(long x) {cerr << x;}
void __print(long long x) {cerr << x;}
void __print(unsigned x) {cerr << x;}
void __print(unsigned long x) {cerr << x;}
void __print(unsigned long long x) {cerr << x;}
void __print(float x) {cerr << x;}
void __print(double x) {cerr << x;}
void __print(long double x) {cerr << x;}
void __print(char x) {cerr << '\'' << x << '\'';}
void __print(const char *x) {cerr << '\"' << x << '\"';}
void __print(const string &x) {cerr << '\"' << x << '\"';}
void __print(bool x) {cerr << (x ? "true" : "false");}

template<typename T, typename V>
void __print(const pair<T, V> &x) {cerr << '{'; __print(x.first); cerr << ", "; __print(x.second); cerr << '}';}
template<typename T>
void __print(const T &x) {int f = 0; cerr << '{'; for (auto &i: x) cerr << (f++ ? ", " : ""), __print(i); cerr << "}";}
void _print() {cerr << "]\n";}
template <typename T, typename... V>
void _print(T t, V... v) {__print(t); if (sizeof...(v)) cerr << ", "; _print(v...);}
#ifdef DEBUG
#define dbg(x...) cerr << "\e[91m"<<__func__<<":"<<__LINE__<<" [" << #x << "] = ["; _print(x); cerr << "\e[39m" << endl;
#else
#define dbg(x...)
#endif

template<typename S, typename T = S> void chmin(S &s, T t) {s = s < t ? s : t;}
template<typename S, typename T = S> void chmax(S &s, T t) {s = s > t ? s : t;}

const int INF = 1e9; // 10^9 = 1B is < 2^31-1
const ll LLINF = 4e18; // 4*10^18 is < 2^63-1
const double EPS = 1e-9;
const ll MOD = 1e9+7;

const int N=1010;
pt v[N];
int n;

struct DSU {
    vector<int> e;
    void init(int n) { e = vector<int>(n, -1); }
    int get(int x) { return (e[x] < 0 ? x : e[x] = get(e[x])); }
    bool sameSet(int x, int y) { return get(x) == get(y); }
    int size(int x) { return -e[get(x)]; }
    bool unite(int x, int y) {
        x = get(x), y = get(y);
        if (x == y) return 0;
        if (e[x] > e[y]) swap(x, y);
        e[x] += e[y];
        e[y] = x;
        return 1;
    }
};

bool ok(double x) {
    DSU dsu;
    dsu.init(n);
    for (int i = 0; i < n; i++) {
        for (int j = i+1; j < n; j++) {
            ld dist=hypot(v[i].X-v[j].X, v[i].Y-v[j].Y);
            if(dist<=x) {
                dsu.unite(i, j);
            }
        }
    }
    
    return dsu.size(0)==n;
}

int solve() {
    std::cin >> n;
    for (int i = 0; i < n; i++) {
        std::cin >> v[i];
    }

    //std::cout << (ok(1.5)) << std::endl;
    //sreturn 0;
    ld lo=EPS, hi=2e5;
    ld ans=hi;
    while(hi-lo>EPS) {
        ld mid=(lo+hi)/2;
        if(ok(mid)) {
            ans=mid;
            hi=mid-EPS;
        } else {
            lo=mid;
        }
    }

    std::cout << fixed << setprecision(15);
    std::cout << ans << std::endl;
    return 0;
}

int32_t main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int TET = 1;
    //cin >> TET;
    for (int i = 1; i <= TET; i++) {
        #ifdef ONPC
            cout << "TEST CASE#" << i << endl;
        #endif
        
        if (solve()) {
            break;
        }

        #ifdef ONPC
            cout << "__________________________" << endl;
        #endif
    }
    #ifdef ONPC
        cerr << endl << "finished in " << clock() * 1.0 / CLOCKS_PER_SEC << " sec" << endl;
    #endif
}

Test details

Test 1

Verdict: ACCEPTED

input
1
4.2591064316 -1.4305814994

correct output
0.00000000000000000000

user output
0.000000002842171

Test 2

Verdict: ACCEPTED

input
2
-6.0847229043 -1.5324885688
-1.6396947713 -1.0447428951

correct output
4.47170783318572061639

user output
4.471707834402267

Test 3

Verdict: ACCEPTED

input
2
-0.3451828704 -7.1873918490
1.0713060289 1.8791459872

correct output
9.17652162516311534299

user output
9.176521625389732

Test 4

Verdict: ACCEPTED

input
3
4.2591064316 -1.4305814994
3.8176970288 4.3830061776
-0.1776213445 5.6005552105

correct output
5.83032108370083756695

user output
5.830321084637371

Test 5

Verdict: ACCEPTED

input
3
-1.0847570211 7.2329426240
2.3665666348 -8.2915635928
-6.5499304506 -8.4795054694

correct output
15.90351936689602016951

user output
15.903519368408119

Test 6

Verdict: ACCEPTED

input
4
-0.0065099865 -6.8175556290
-8.9288243166 -5.6345572909
-4.7044491466 -1.5514279091
1.0409756581 5.2858009044

correct output
8.93071128380134405655

user output
8.930711284089796

Test 7

Verdict: ACCEPTED

input
4
-6.5835380846 -4.2392097853
-6.7150543624 -2.0586391194
-3.7243738734 -9.5714693167
-0.2547656922 8.6929691250

correct output
12.54322165726830064138

user output
12.543221658172954

Test 8

Verdict: ACCEPTED

input
4
-6.3149870710 7.7035024848
4.0148832489 2.6391874051
-8.1980280145 -2.8164045396
7.7349470409 9.3888104114

correct output
11.50449946987819829780

user output
11.504499470835229

Test 9

Verdict: ACCEPTED

input
4
3.1826102096 9.6315702959
9.7306184566 -9.6262882447
-5.8529365549 -5.2919807295
-4.2871937712 -0.2626979830

correct output
16.17508604096948732209

user output
16.175086041350848

Test 10

Verdict: ACCEPTED

input
4
-0.3725599416 3.7535021503
7.1314057588 -0.3452105339
2.1019197385 -1.2159625143
-4.8936470874 0.0075031628

correct output
5.87134885646126597177

user output
5.871348856813754

Test 11

Verdict: ACCEPTED

input
5
1.8568923303 6.8853148851
7.1589123998 6.9450347477
2.4712739299 -2.3123658325
-4.0493078929 -8.8657404813
...

correct output
9.21817744094991402444

user output
9.218177442337355

Test 12

Verdict: ACCEPTED

input
5
9.9436961646 8.6511472274
-7.4375110446 9.9808103093
-5.2782204740 -2.0683854767
-2.2417851948 3.3949208089
...

correct output
11.50777035927174466248

user output
11.507770359525368

Test 13

Verdict: ACCEPTED

input
5
-6.2983583685 8.6308172719
8.9546122195 -0.3050180737
-3.5892712724 -6.9114664880
3.9772537872 -7.6009891200
...

correct output
9.71303212730634494936

user output
9.713032128431729

Test 14

Verdict: ACCEPTED

input
5
-8.5855023910 6.7989808494
-7.5734284134 1.3862265158
-1.2587611941 -9.6250397903
-9.1873852484 -5.0422339644
...

correct output
9.15779387365360776282

user output
9.157793874680600

Test 15

Verdict: ACCEPTED

input
5
8.0124290984 -6.5460934977
7.1124189020 2.1807119656
1.9511241172 -7.1707165417
-5.5098814611 3.9684047876
...

correct output
12.74826702270330998704

user output
12.748267023120568

Test 16

Verdict: ACCEPTED

input
5
-8.8963975840 6.6265568038
-2.7252620915 9.5888999566
-8.2035793155 -2.0652678674
-2.9172391409 -0.2672400301
...

correct output
13.00048104392330636930

user output
13.000481044522179

Test 17

Verdict: ACCEPTED

input
5
8.9495215281 -5.8118726856
-8.7149078500 -2.5978119204
9.7005763562 -8.0105662272
2.1694723402 0.6079293528
...

correct output
11.34665189540580491293

user output
11.346651895429037

Test 18

Verdict: ACCEPTED

input
5
-5.4532185007 -3.6205554438
9.5644579243 -0.8883018432
-3.8397446555 -4.7225831843
-8.2651312952 -1.6125557848
...

correct output
13.94182054837260448070

user output
13.941820549109574

Test 19

Verdict: ACCEPTED

input
5
-9.7777112346 -5.2112085653
-2.4496604741 6.3292256907
-1.5529838240 2.2406666587
5.3212585879 -1.9614977231
...

correct output
11.09849473274371704085

user output
11.098494733937147

Test 20

Verdict: ACCEPTED

input
5
-2.7107794769 -0.0173926842
-9.8491379968 -3.6755137605
-9.7335597820 7.5444241810
-7.2494636084 -7.2277343960
...

correct output
10.31990879400218362374

user output
10.319908795268074

Test 21

Verdict: ACCEPTED

input
10
1.8568923303 6.8853148851
7.1589123998 6.9450347477
2.4712739299 -2.3123658325
-4.0493078929 -8.8657404813
...

correct output
8.43373300459665028398

user output
8.433733004685993

Test 22

Verdict: ACCEPTED

input
10
9.9436961646 8.6511472274
-7.4375110446 9.9808103093
-5.2782204740 -2.0683854767
-2.2417851948 3.3949208089
...

correct output
8.30203528819313353593

user output
8.302035288843888

Test 23

Verdict: ACCEPTED

input
10
-6.2983583685 8.6308172719
8.9546122195 -0.3050180737
-3.5892712724 -6.9114664880
3.9772537872 -7.6009891200
...

correct output
8.46970179011128996346

user output
8.469701790650333

Test 24

Verdict: ACCEPTED

input
10
-8.5855023910 6.7989808494
-7.5734284134 1.3862265158
-1.2587611941 -9.6250397903
-9.1873852484 -5.0422339644
...

correct output
8.03457104643789539987

user output
8.034571046946385

Test 25

Verdict: ACCEPTED

input
10
8.0124290984 -6.5460934977
7.1124189020 2.1807119656
1.9511241172 -7.1707165417
-5.5098814611 3.9684047876
...

correct output
8.40104919081107975529

user output
8.401049191015443

Test 26

Verdict: ACCEPTED

input
10
-8.8963975840 6.6265568038
-2.7252620915 9.5888999566
-8.2035793155 -2.0652678674
-2.9172391409 -0.2672400301
...

correct output
6.83090893175365792417

user output
6.830908931999255

Test 27

Verdict: ACCEPTED

input
10
8.9495215281 -5.8118726856
-8.7149078500 -2.5978119204
9.7005763562 -8.0105662272
2.1694723402 0.6079293528
...

correct output
10.24111977550903899992

user output
10.241119775660321

Test 28

Verdict: ACCEPTED

input
10
-5.4532185007 -3.6205554438
9.5644579243 -0.8883018432
-3.8397446555 -4.7225831843
-8.2651312952 -1.6125557848
...

correct output
7.75719199582075191442

user output
7.757191996008255

Test 29

Verdict: ACCEPTED

input
10
-9.7777112346 -5.2112085653
-2.4496604741 6.3292256907
-1.5529838240 2.2406666587
5.3212585879 -1.9614977231
...

correct output
8.05688489611421130090

user output
8.056884896135084

Test 30

Verdict: ACCEPTED

input
10
-2.7107794769 -0.0173926842
-9.8491379968 -3.6755137605
-9.7335597820 7.5444241810
-7.2494636084 -7.2277343960
...

correct output
9.50770899513712303228

user output
9.507708995247585

Test 31

Verdict: ACCEPTED

input
100
18.5689233033 68.8531488513
71.5891239980 69.4503474769
24.7127392992 -23.1236583252
-40.4930789286 -88.6574048134
...

correct output
45.82615853745645677006

user output
45.826158538254946

Test 32

Verdict: ACCEPTED

input
100
99.4369616461 86.5114722736
-74.3751104455 99.8081030931
-52.7822047404 -20.6838547675
-22.4178519479 33.9492080894
...

correct output
35.50700204049589586708

user output
35.507002042242896

Test 33

Verdict: ACCEPTED

input
100
-62.9835836852 86.3081727189
89.5461221947 -3.0501807371
-35.8927127244 -69.1146648801
39.7725378724 -76.0098911999
...

correct output
31.22345190290398834337

user output
31.223451904225900

Test 34

Verdict: ACCEPTED

input
100
-85.8550239098 67.9898084937
-75.7342841341 13.8622651580
-12.5876119410 -96.2503979031
-91.8738524837 -50.4223396439
...

correct output
28.89162360331196992801

user output
28.891623603693499

Test 35

Verdict: ACCEPTED

input
100
80.1242909845 -65.4609349767
71.1241890198 21.8071196561
19.5112411723 -71.7071654174
-55.0988146115 39.6840478762
...

correct output
30.00479071642544109597

user output
30.004790716699363

Test 36

Verdict: ACCEPTED

input
100
-88.9639758402 66.2655680380
-27.2526209146 95.8889995664
-82.0357931550 -20.6526786735
-29.1723914088 -2.6724003014
...

correct output
38.79483709927152193866

user output
38.794837099341882

Test 37

Verdict: ACCEPTED

input
100
89.4952152806 -58.1187268564
-87.1490785004 -25.9781192037
97.0057635618 -80.1056622716
21.6947234017 6.0792935276
...

correct output
34.76745343632208916709

user output
34.767453437115806

Test 38

Verdict: ACCEPTED

input
100
-54.5321850071 -36.2055544378
95.6445792428 -8.8830184320
-38.3974465552 -47.2258318431
-82.6513129519 -16.1255578477
...

correct output
47.33751163277151602013

user output
47.337511632802860

Test 39

Verdict: ACCEPTED

input
100
-97.7771123464 -52.1120856531
-24.4966047411 63.2922569071
-15.5298382401 22.4066665867
53.2125858790 -19.6149772311
...

correct output
27.44794402724227265142

user output
27.447944027617672

Test 40

Verdict: ACCEPTED

input
100
-27.1077947686 -0.1739268423
-98.4913799681 -36.7551376049
-97.3355978196 75.4442418096
-72.4946360840 -72.2773439601
...

correct output
28.86385308540476819956

user output
28.863853086646440

Test 41

Verdict: ACCEPTED

input
200
18568.9233033365 68853.1488513...

correct output
26027.91880492172062666612

user output
26027.918804922366583

Test 42

Verdict: ACCEPTED

input
200
99436.9616460531 86511.4722736...

correct output
24738.66365623138931617575

user output
24738.663656232390156

Test 43

Verdict: ACCEPTED

input
200
-62983.5836851972 86308.172718...

correct output
23114.05959792925350093640

user output
23114.059597929728572

Test 44

Verdict: ACCEPTED

input
200
-85855.0239097887 67989.808493...

correct output
24449.05462058239773170953

user output
24449.054620582675874

Test 45

Verdict: ACCEPTED

input
200
80124.2909844513 -65460.934976...

correct output
24090.54761531628931514604

user output
24090.547615317434325

Test 46

Verdict: ACCEPTED

input
200
-88963.9758401554 66265.568038...

correct output
23439.53146829533727313333

user output
23439.531468295603142

Test 47

Verdict: ACCEPTED

input
200
89495.2152805803 -58118.726856...

correct output
29128.03468783543361553257

user output
29128.034687835814584

Test 48

Verdict: ACCEPTED

input
200
-54532.1850070586 -36205.55443...

correct output
24978.72415831473490044345

user output
24978.724158315311833

Test 49

Verdict: ACCEPTED

input
200
-97777.1123464485 -52112.08565...

correct output
21209.18600929237329211219

user output
21209.186009292483817

Test 50

Verdict: ACCEPTED

input
200
-27107.7947686252 -173.9268423...

correct output
23203.29193911443391939997

user output
23203.291939115978554

Test 51

Verdict: ACCEPTED

input
500
18568.9233033365 68853.1488513...

correct output
16841.08154772710746982511

user output
16841.081547728342258

Test 52

Verdict: ACCEPTED

input
500
99436.9616460531 86511.4722736...

correct output
13884.23860887098339489398

user output
13884.238608871889250

Test 53

Verdict: ACCEPTED

input
500
-62983.5836851972 86308.172718...

correct output
16913.31415478189355283689

user output
16913.314154782501902

Test 54

Verdict: ACCEPTED

input
500
-85855.0239097887 67989.808493...

correct output
16129.83510192776483815891

user output
16129.835101927811433

Test 55

Verdict: ACCEPTED

input
500
80124.2909844513 -65460.934976...

correct output
13611.19288194623884713508

user output
13611.192881946523707

Test 56

Verdict: ACCEPTED

input
500
-88963.9758401554 66265.568038...

correct output
14129.83398978742408491627

user output
14129.833989787999265

Test 57

Verdict: ACCEPTED

input
500
89495.2152805803 -58118.726856...

correct output
14531.53671287865778083415

user output
14531.536712879072208

Test 58

Verdict: ACCEPTED

input
500
-54532.1850070586 -36205.55443...

correct output
14387.11286249742570308996

user output
14387.112862498165220

Test 59

Verdict: ACCEPTED

input
500
-97777.1123464485 -52112.08565...

correct output
15400.66824492762415577118

user output
15400.668244929410515

Test 60

Verdict: ACCEPTED

input
500
-27107.7947686252 -173.9268423...

correct output
16119.06959734976690334918

user output
16119.069597350221026

Test 61

Verdict: ACCEPTED

input
1000
18568.9233033365 68853.1488513...

correct output
11324.85732396049615111622

user output
11324.857323961477794

Test 62

Verdict: ACCEPTED

input
1000
99436.9616460531 86511.4722736...

correct output
10665.82033665705907843346

user output
10665.820336657198075

Test 63

Verdict: ACCEPTED

input
1000
-62983.5836851972 86308.172718...

correct output
12182.40552864239620589615

user output
12182.405528642696197

Test 64

Verdict: ACCEPTED

input
1000
-85855.0239097887 67989.808493...

correct output
10851.63808946087635654010

user output
10851.638089461304910

Test 65

Verdict: ACCEPTED

input
1000
80124.2909844513 -65460.934976...

correct output
11745.88161026176816204014

user output
11745.881610261780178