10917 2024. 04. 18 20:52:47 gortomi Rajz cpp17 Hibás válasz 0/100 103ms 30080 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
vector<int> p, r;
int n;
int get(int v)
{
    return p[v] == 0 ? v : p[v] = get(p[v]);
}
void unio(int a, int b)
{
    a = get(a);
    b = get(b);
    if(a != b)
    {
        if(r[a] < r[b]) swap(a, b);
        p[b] = a;
        if(r[a] == r[b]) r[a]++;
    }
}
struct val
{
    ll a, b, d;
};
bool insc(ll xa, ll xb, ll ya, ll yb)
{
    if(ya == yb) return 0;
    if(xb != xa)
    {
        ll x = xa * (yb - ya) + -ya * (xb - xa);
        ll l = xa * (yb - ya), r = xb * (yb - ya);
        if(l > r) swap(l, r);
        return ((x > 0) ^ (ya > yb)) && x >= l && x <= r;
    }
    return xa > 0 && max(ya, yb) >= 0 && min(ya, yb) <= 0;
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    p.resize(2 * n + 1);
    r.resize(2 * n + 1);
    vector<ll> x(n + 1), y(n + 1);
    vector<val> e;
    for(int i = 1; i <= n; i++)
    {
        cin >> x[i] >> y[i];
        for(int j = 1; j < i; j++)
        {
            ll dx = x[i] - x[j], dy = y[i] - y[j];
            e.push_back({j, i, dx * dx + dy * dy});
        }
    }
    sort(e.begin(), e.end(), [](val a, val b)
    {
        return a.d < b.d;
    });
    for(auto [a, b, d] : e)
    {
        bool g = insc(x[a], x[b], y[a], y[b]);
        //cout << a << " " << b << " " << d << " " << g << "\n";
        if(g)
        {
            unio(a, b + n);
            unio(a + n, b);
        }
        else
        {
            unio(a, b);
            unio(a + n, b + n);
        }
        if(get(a) == get(a + n))
        {
            cout << d << "\n";
            return 0;
        }
    }
    cout << "-1\n";
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1828 KiB
2 Elfogadva 3ms 2072 KiB
subtask2 0/20
3 Elfogadva 3ms 2284 KiB
4 Hibás válasz 3ms 2492 KiB
5 Elfogadva 3ms 2676 KiB
6 Elfogadva 2ms 2756 KiB
7 Hibás válasz 3ms 2872 KiB
8 Elfogadva 3ms 2956 KiB
9 Hibás válasz 3ms 3084 KiB
10 Hibás válasz 3ms 3184 KiB
11 Elfogadva 3ms 3508 KiB
12 Elfogadva 3ms 3416 KiB
subtask3 0/20
13 Elfogadva 3ms 2284 KiB
14 Hibás válasz 3ms 2492 KiB
15 Elfogadva 3ms 2676 KiB
16 Elfogadva 2ms 2756 KiB
17 Hibás válasz 3ms 2872 KiB
18 Elfogadva 3ms 2956 KiB
19 Hibás válasz 3ms 3084 KiB
20 Hibás válasz 3ms 3184 KiB
21 Elfogadva 3ms 3508 KiB
22 Elfogadva 3ms 3416 KiB
23 Elfogadva 3ms 3332 KiB
24 Elfogadva 3ms 3408 KiB
25 Hibás válasz 3ms 3620 KiB
26 Hibás válasz 3ms 3616 KiB
27 Elfogadva 3ms 4112 KiB
28 Elfogadva 3ms 3888 KiB
29 Elfogadva 3ms 3908 KiB
30 Elfogadva 3ms 3988 KiB
31 Elfogadva 3ms 3976 KiB
subtask4 0/20
32 Elfogadva 3ms 2284 KiB
33 Hibás válasz 3ms 2492 KiB
34 Elfogadva 3ms 2676 KiB
35 Elfogadva 2ms 2756 KiB
36 Hibás válasz 3ms 2872 KiB
37 Elfogadva 3ms 2956 KiB
38 Hibás válasz 3ms 3084 KiB
39 Hibás válasz 3ms 3184 KiB
40 Elfogadva 3ms 3508 KiB
41 Elfogadva 3ms 3416 KiB
42 Elfogadva 3ms 3332 KiB
43 Elfogadva 3ms 3408 KiB
44 Hibás válasz 3ms 3620 KiB
45 Hibás válasz 3ms 3616 KiB
46 Elfogadva 3ms 4112 KiB
47 Elfogadva 3ms 3888 KiB
48 Elfogadva 3ms 3908 KiB
49 Elfogadva 3ms 3988 KiB
50 Elfogadva 3ms 3976 KiB
51 Elfogadva 3ms 4308 KiB
52 Elfogadva 3ms 4312 KiB
53 Elfogadva 4ms 4564 KiB
54 Elfogadva 3ms 4592 KiB
55 Elfogadva 3ms 4588 KiB
56 Elfogadva 3ms 4520 KiB
57 Elfogadva 3ms 4528 KiB
58 Elfogadva 4ms 4816 KiB
59 Elfogadva 3ms 5044 KiB
60 Elfogadva 3ms 4780 KiB
61 Hibás válasz 3ms 4792 KiB
62 Hibás válasz 3ms 4940 KiB
63 Hibás válasz 3ms 4908 KiB
64 Hibás válasz 3ms 5188 KiB
65 Hibás válasz 3ms 5444 KiB
66 Elfogadva 3ms 5340 KiB
67 Elfogadva 3ms 5344 KiB
68 Elfogadva 4ms 5392 KiB
69 Elfogadva 3ms 5248 KiB
70 Elfogadva 4ms 5172 KiB
subtask5 0/40
71 Elfogadva 3ms 2284 KiB
72 Hibás válasz 3ms 2492 KiB
73 Elfogadva 3ms 2676 KiB
74 Elfogadva 2ms 2756 KiB
75 Hibás válasz 3ms 2872 KiB
76 Elfogadva 3ms 2956 KiB
77 Hibás válasz 3ms 3084 KiB
78 Hibás válasz 3ms 3184 KiB
79 Elfogadva 3ms 3508 KiB
80 Elfogadva 3ms 3416 KiB
81 Elfogadva 3ms 3332 KiB
82 Elfogadva 3ms 3408 KiB
83 Hibás válasz 3ms 3620 KiB
84 Hibás válasz 3ms 3616 KiB
85 Elfogadva 3ms 4112 KiB
86 Elfogadva 3ms 3888 KiB
87 Elfogadva 3ms 3908 KiB
88 Elfogadva 3ms 3988 KiB
89 Elfogadva 3ms 3976 KiB
90 Elfogadva 3ms 4308 KiB
91 Elfogadva 3ms 4312 KiB
92 Elfogadva 4ms 4564 KiB
93 Elfogadva 3ms 4592 KiB
94 Elfogadva 3ms 4588 KiB
95 Elfogadva 3ms 4520 KiB
96 Elfogadva 3ms 4528 KiB
97 Elfogadva 4ms 4816 KiB
98 Elfogadva 3ms 5044 KiB
99 Elfogadva 3ms 4780 KiB
100 Hibás válasz 3ms 4792 KiB
101 Hibás válasz 3ms 4940 KiB
102 Hibás válasz 3ms 4908 KiB
103 Hibás válasz 3ms 5188 KiB
104 Hibás válasz 3ms 5444 KiB
105 Elfogadva 3ms 5340 KiB
106 Elfogadva 3ms 5344 KiB
107 Elfogadva 4ms 5392 KiB
108 Elfogadva 3ms 5248 KiB
109 Elfogadva 4ms 5172 KiB
110 Elfogadva 89ms 29408 KiB
111 Hibás válasz 81ms 29448 KiB
112 Elfogadva 86ms 29584 KiB
113 Elfogadva 86ms 29620 KiB
114 Elfogadva 86ms 29584 KiB
115 Hibás válasz 82ms 29516 KiB
116 Elfogadva 90ms 29600 KiB
117 Elfogadva 85ms 29776 KiB
118 Elfogadva 83ms 29780 KiB
119 Elfogadva 90ms 29712 KiB
120 Elfogadva 90ms 29708 KiB
121 Elfogadva 90ms 29764 KiB
122 Hibás válasz 90ms 29712 KiB
123 Hibás válasz 85ms 29856 KiB
124 Hibás válasz 83ms 30028 KiB
125 Hibás válasz 83ms 30024 KiB
126 Elfogadva 93ms 30024 KiB
127 Elfogadva 93ms 30020 KiB
128 Elfogadva 100ms 30024 KiB
129 Elfogadva 93ms 30020 KiB
130 Elfogadva 97ms 30024 KiB
131 Elfogadva 75ms 30080 KiB
132 Elfogadva 103ms 30080 KiB