109022024-04-18 19:30:14gortomiRajzcpp17Hibás válasz 0/10083ms29876 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
vector<int> p, r;
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)
{
    long double b = (yb - ya) / (xb - xa);
    if(b == 0) return 0;
    long double x = xa + (-ya / b);
    return x > 0;
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int n;
    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)
    {
        //cout << a << " " << b << " " << d << "\n";
        bool g = insc(x[a], x[b], y[a], y[b]);
        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
1Elfogadva3ms1976 KiB
2Hibás válasz3ms2128 KiB
subtask20/20
3Elfogadva3ms2248 KiB
4Hibás válasz3ms2468 KiB
5Futási hiba3ms2656 KiB
6Hibás válasz3ms2808 KiB
7Hibás válasz3ms2892 KiB
8Hibás válasz3ms2816 KiB
9Elfogadva3ms2908 KiB
10Hibás válasz3ms3044 KiB
11Elfogadva3ms3264 KiB
12Elfogadva3ms3328 KiB
subtask30/20
13Elfogadva3ms2248 KiB
14Hibás válasz3ms2468 KiB
15Futási hiba3ms2656 KiB
16Hibás válasz3ms2808 KiB
17Hibás válasz3ms2892 KiB
18Hibás válasz3ms2816 KiB
19Elfogadva3ms2908 KiB
20Hibás válasz3ms3044 KiB
21Elfogadva3ms3264 KiB
22Elfogadva3ms3328 KiB
23Futási hiba3ms3576 KiB
24Futási hiba3ms3784 KiB
25Hibás válasz3ms3772 KiB
26Hibás válasz3ms3800 KiB
27Hibás válasz3ms3880 KiB
28Hibás válasz3ms3976 KiB
29Elfogadva3ms3976 KiB
30Hibás válasz3ms4116 KiB
31Futási hiba3ms4136 KiB
subtask40/20
32Elfogadva3ms2248 KiB
33Hibás válasz3ms2468 KiB
34Futási hiba3ms2656 KiB
35Hibás válasz3ms2808 KiB
36Hibás válasz3ms2892 KiB
37Hibás válasz3ms2816 KiB
38Elfogadva3ms2908 KiB
39Hibás válasz3ms3044 KiB
40Elfogadva3ms3264 KiB
41Elfogadva3ms3328 KiB
42Futási hiba3ms3576 KiB
43Futási hiba3ms3784 KiB
44Hibás válasz3ms3772 KiB
45Hibás válasz3ms3800 KiB
46Hibás válasz3ms3880 KiB
47Hibás válasz3ms3976 KiB
48Elfogadva3ms3976 KiB
49Hibás válasz3ms4116 KiB
50Futási hiba3ms4136 KiB
51Futási hiba3ms4624 KiB
52Futási hiba4ms4944 KiB
53Futási hiba4ms5152 KiB
54Futási hiba4ms5148 KiB
55Futási hiba4ms5200 KiB
56Hibás válasz3ms4960 KiB
57Hibás válasz3ms4988 KiB
58Hibás válasz3ms5008 KiB
59Hibás válasz3ms5020 KiB
60Hibás válasz3ms5004 KiB
61Futási hiba3ms5072 KiB
62Hibás válasz3ms5036 KiB
63Futási hiba4ms5352 KiB
64Hibás válasz3ms5272 KiB
65Hibás válasz3ms5296 KiB
66Futási hiba3ms5252 KiB
67Hibás válasz3ms5308 KiB
68Hibás válasz3ms5280 KiB
69Elfogadva4ms5196 KiB
70Hibás válasz3ms5200 KiB
subtask50/40
71Elfogadva3ms2248 KiB
72Hibás válasz3ms2468 KiB
73Futási hiba3ms2656 KiB
74Hibás válasz3ms2808 KiB
75Hibás válasz3ms2892 KiB
76Hibás válasz3ms2816 KiB
77Elfogadva3ms2908 KiB
78Hibás válasz3ms3044 KiB
79Elfogadva3ms3264 KiB
80Elfogadva3ms3328 KiB
81Futási hiba3ms3576 KiB
82Futási hiba3ms3784 KiB
83Hibás válasz3ms3772 KiB
84Hibás válasz3ms3800 KiB
85Hibás válasz3ms3880 KiB
86Hibás válasz3ms3976 KiB
87Elfogadva3ms3976 KiB
88Hibás válasz3ms4116 KiB
89Futási hiba3ms4136 KiB
90Futási hiba3ms4624 KiB
91Futási hiba4ms4944 KiB
92Futási hiba4ms5152 KiB
93Futási hiba4ms5148 KiB
94Futási hiba4ms5200 KiB
95Hibás válasz3ms4960 KiB
96Hibás válasz3ms4988 KiB
97Hibás válasz3ms5008 KiB
98Hibás válasz3ms5020 KiB
99Hibás válasz3ms5004 KiB
100Futási hiba3ms5072 KiB
101Hibás válasz3ms5036 KiB
102Futási hiba4ms5352 KiB
103Hibás válasz3ms5272 KiB
104Hibás válasz3ms5296 KiB
105Futási hiba3ms5252 KiB
106Hibás válasz3ms5308 KiB
107Hibás válasz3ms5280 KiB
108Elfogadva4ms5196 KiB
109Hibás válasz3ms5200 KiB
110Futási hiba81ms29532 KiB
111Futási hiba79ms29624 KiB
112Futási hiba79ms29640 KiB
113Futási hiba79ms29644 KiB
114Futási hiba81ms29620 KiB
115Futási hiba79ms29624 KiB
116Hibás válasz82ms29628 KiB
117Hibás válasz82ms29672 KiB
118Hibás válasz82ms29672 KiB
119Hibás válasz82ms29692 KiB
120Hibás válasz82ms29700 KiB
121Hibás válasz83ms29700 KiB
122Futási hiba82ms29752 KiB
123Hibás válasz82ms29720 KiB
124Futási hiba82ms29876 KiB
125Hibás válasz82ms29788 KiB
126Futási hiba82ms29628 KiB
127Futási hiba82ms29708 KiB
128Futási hiba82ms29708 KiB
129Futási hiba82ms29628 KiB
130Hibás válasz82ms29708 KiB
131Elfogadva79ms29756 KiB
132Hibás válasz82ms29712 KiB