109192024-04-18 21:54:18gortomiRajzcpp17Elfogadva 100/10098ms30028 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 cross(ll x1, ll y1, ll x2, ll y2)
{
    return x1 * y2 - x2 * y1 < 0;
}
bool insc(ll xa, ll xb, ll ya, ll yb)
{
    ll xd = 2e9 + 5, yd = 1, xc = 0, yc = 0;
    return (cross(xb - xa, yb - ya, xc - xa, yc - ya) != cross(xb - xa, yb - ya, xd - xa, yd - ya)) &&
        (cross(xd - xc, yd - yc, xa - xc, ya - yc) != cross(xd - xc, yd - yc, xb - xc, yb - yc));
}
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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1832 KiB
2Elfogadva3ms2024 KiB
subtask220/20
3Elfogadva3ms2240 KiB
4Elfogadva3ms2464 KiB
5Elfogadva3ms2556 KiB
6Elfogadva3ms2776 KiB
7Elfogadva3ms2984 KiB
8Elfogadva3ms3108 KiB
9Elfogadva3ms3336 KiB
10Elfogadva3ms3532 KiB
11Elfogadva3ms3616 KiB
12Elfogadva3ms3768 KiB
subtask320/20
13Elfogadva3ms2240 KiB
14Elfogadva3ms2464 KiB
15Elfogadva3ms2556 KiB
16Elfogadva3ms2776 KiB
17Elfogadva3ms2984 KiB
18Elfogadva3ms3108 KiB
19Elfogadva3ms3336 KiB
20Elfogadva3ms3532 KiB
21Elfogadva3ms3616 KiB
22Elfogadva3ms3768 KiB
23Elfogadva3ms4008 KiB
24Elfogadva3ms4096 KiB
25Elfogadva3ms4168 KiB
26Elfogadva3ms4292 KiB
27Elfogadva3ms4376 KiB
28Elfogadva3ms4376 KiB
29Elfogadva3ms4356 KiB
30Elfogadva3ms4444 KiB
31Elfogadva3ms4412 KiB
subtask420/20
32Elfogadva3ms2240 KiB
33Elfogadva3ms2464 KiB
34Elfogadva3ms2556 KiB
35Elfogadva3ms2776 KiB
36Elfogadva3ms2984 KiB
37Elfogadva3ms3108 KiB
38Elfogadva3ms3336 KiB
39Elfogadva3ms3532 KiB
40Elfogadva3ms3616 KiB
41Elfogadva3ms3768 KiB
42Elfogadva3ms4008 KiB
43Elfogadva3ms4096 KiB
44Elfogadva3ms4168 KiB
45Elfogadva3ms4292 KiB
46Elfogadva3ms4376 KiB
47Elfogadva3ms4376 KiB
48Elfogadva3ms4356 KiB
49Elfogadva3ms4444 KiB
50Elfogadva3ms4412 KiB
51Elfogadva4ms5040 KiB
52Elfogadva3ms5324 KiB
53Elfogadva3ms5280 KiB
54Elfogadva3ms5236 KiB
55Elfogadva3ms5228 KiB
56Elfogadva3ms5520 KiB
57Elfogadva3ms5488 KiB
58Elfogadva3ms5492 KiB
59Elfogadva3ms5512 KiB
60Elfogadva3ms5548 KiB
61Elfogadva3ms5500 KiB
62Elfogadva3ms5472 KiB
63Elfogadva3ms5472 KiB
64Elfogadva3ms5508 KiB
65Elfogadva3ms5416 KiB
66Elfogadva3ms5420 KiB
67Elfogadva3ms5672 KiB
68Elfogadva3ms5628 KiB
69Elfogadva3ms5656 KiB
70Elfogadva3ms5660 KiB
subtask540/40
71Elfogadva3ms2240 KiB
72Elfogadva3ms2464 KiB
73Elfogadva3ms2556 KiB
74Elfogadva3ms2776 KiB
75Elfogadva3ms2984 KiB
76Elfogadva3ms3108 KiB
77Elfogadva3ms3336 KiB
78Elfogadva3ms3532 KiB
79Elfogadva3ms3616 KiB
80Elfogadva3ms3768 KiB
81Elfogadva3ms4008 KiB
82Elfogadva3ms4096 KiB
83Elfogadva3ms4168 KiB
84Elfogadva3ms4292 KiB
85Elfogadva3ms4376 KiB
86Elfogadva3ms4376 KiB
87Elfogadva3ms4356 KiB
88Elfogadva3ms4444 KiB
89Elfogadva3ms4412 KiB
90Elfogadva4ms5040 KiB
91Elfogadva3ms5324 KiB
92Elfogadva3ms5280 KiB
93Elfogadva3ms5236 KiB
94Elfogadva3ms5228 KiB
95Elfogadva3ms5520 KiB
96Elfogadva3ms5488 KiB
97Elfogadva3ms5492 KiB
98Elfogadva3ms5512 KiB
99Elfogadva3ms5548 KiB
100Elfogadva3ms5500 KiB
101Elfogadva3ms5472 KiB
102Elfogadva3ms5472 KiB
103Elfogadva3ms5508 KiB
104Elfogadva3ms5416 KiB
105Elfogadva3ms5420 KiB
106Elfogadva3ms5672 KiB
107Elfogadva3ms5628 KiB
108Elfogadva3ms5656 KiB
109Elfogadva3ms5660 KiB
110Elfogadva81ms29864 KiB
111Elfogadva85ms29864 KiB
112Elfogadva86ms29872 KiB
113Elfogadva86ms29864 KiB
114Elfogadva86ms29868 KiB
115Elfogadva81ms29864 KiB
116Elfogadva83ms29936 KiB
117Elfogadva83ms30028 KiB
118Elfogadva83ms29936 KiB
119Elfogadva86ms29868 KiB
120Elfogadva85ms29868 KiB
121Elfogadva85ms29868 KiB
122Elfogadva83ms29868 KiB
123Elfogadva85ms29756 KiB
124Elfogadva89ms29940 KiB
125Elfogadva85ms29864 KiB
126Elfogadva97ms29868 KiB
127Elfogadva92ms29916 KiB
128Elfogadva98ms29868 KiB
129Elfogadva90ms29916 KiB
130Elfogadva96ms29964 KiB
131Elfogadva75ms29976 KiB
132Elfogadva98ms29944 KiB