109102024-04-18 20:10:48gortomiRajzcpp17Hibás válasz 0/10092ms37832 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
vector<int> p, r;
int n;
const int MAX =500000;
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);
    cin >> n;
    p.resize(MAX);
    r.resize(MAX);
    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]);
        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
1Elfogadva7ms9808 KiB
2Hibás válasz6ms9880 KiB
subtask20/20
3Elfogadva6ms10140 KiB
4Hibás válasz4ms10352 KiB
5Futási hiba6ms10780 KiB
6Hibás válasz6ms10436 KiB
7Hibás válasz6ms10704 KiB
8Hibás válasz6ms10864 KiB
9Elfogadva4ms10808 KiB
10Hibás válasz6ms10868 KiB
11Elfogadva6ms10988 KiB
12Elfogadva4ms11240 KiB
subtask30/20
13Elfogadva6ms10140 KiB
14Hibás válasz4ms10352 KiB
15Futási hiba6ms10780 KiB
16Hibás válasz6ms10436 KiB
17Hibás válasz6ms10704 KiB
18Hibás válasz6ms10864 KiB
19Elfogadva4ms10808 KiB
20Hibás válasz6ms10868 KiB
21Elfogadva6ms10988 KiB
22Elfogadva4ms11240 KiB
23Futási hiba6ms11744 KiB
24Futási hiba6ms11656 KiB
25Hibás válasz4ms11432 KiB
26Hibás válasz6ms11556 KiB
27Hibás válasz6ms11768 KiB
28Hibás válasz6ms11884 KiB
29Elfogadva6ms11840 KiB
30Hibás válasz6ms11976 KiB
31Futási hiba6ms12256 KiB
subtask40/20
32Elfogadva6ms10140 KiB
33Hibás válasz4ms10352 KiB
34Futási hiba6ms10780 KiB
35Hibás válasz6ms10436 KiB
36Hibás válasz6ms10704 KiB
37Hibás válasz6ms10864 KiB
38Elfogadva4ms10808 KiB
39Hibás válasz6ms10868 KiB
40Elfogadva6ms10988 KiB
41Elfogadva4ms11240 KiB
42Futási hiba6ms11744 KiB
43Futási hiba6ms11656 KiB
44Hibás válasz4ms11432 KiB
45Hibás válasz6ms11556 KiB
46Hibás válasz6ms11768 KiB
47Hibás válasz6ms11884 KiB
48Elfogadva6ms11840 KiB
49Hibás válasz6ms11976 KiB
50Futási hiba6ms12256 KiB
51Futási hiba7ms12976 KiB
52Futási hiba7ms13044 KiB
53Futási hiba7ms13124 KiB
54Futási hiba7ms13044 KiB
55Futási hiba6ms13156 KiB
56Hibás válasz7ms13100 KiB
57Hibás válasz7ms13036 KiB
58Hibás válasz7ms13044 KiB
59Hibás válasz7ms13188 KiB
60Hibás válasz6ms13136 KiB
61Futási hiba6ms13312 KiB
62Hibás válasz7ms13124 KiB
63Futási hiba6ms13208 KiB
64Hibás válasz7ms12928 KiB
65Hibás válasz6ms13016 KiB
66Futási hiba7ms13100 KiB
67Hibás válasz6ms12936 KiB
68Hibás válasz7ms13020 KiB
69Elfogadva7ms13016 KiB
70Hibás válasz7ms13012 KiB
subtask50/40
71Elfogadva6ms10140 KiB
72Hibás válasz4ms10352 KiB
73Futási hiba6ms10780 KiB
74Hibás válasz6ms10436 KiB
75Hibás válasz6ms10704 KiB
76Hibás válasz6ms10864 KiB
77Elfogadva4ms10808 KiB
78Hibás válasz6ms10868 KiB
79Elfogadva6ms10988 KiB
80Elfogadva4ms11240 KiB
81Futási hiba6ms11744 KiB
82Futási hiba6ms11656 KiB
83Hibás válasz4ms11432 KiB
84Hibás válasz6ms11556 KiB
85Hibás válasz6ms11768 KiB
86Hibás válasz6ms11884 KiB
87Elfogadva6ms11840 KiB
88Hibás válasz6ms11976 KiB
89Futási hiba6ms12256 KiB
90Futási hiba7ms12976 KiB
91Futási hiba7ms13044 KiB
92Futási hiba7ms13124 KiB
93Futási hiba7ms13044 KiB
94Futási hiba6ms13156 KiB
95Hibás válasz7ms13100 KiB
96Hibás válasz7ms13036 KiB
97Hibás válasz7ms13044 KiB
98Hibás válasz7ms13188 KiB
99Hibás válasz6ms13136 KiB
100Futási hiba6ms13312 KiB
101Hibás válasz7ms13124 KiB
102Futási hiba6ms13208 KiB
103Hibás válasz7ms12928 KiB
104Hibás válasz6ms13016 KiB
105Futási hiba7ms13100 KiB
106Hibás válasz6ms12936 KiB
107Hibás válasz7ms13020 KiB
108Elfogadva7ms13016 KiB
109Hibás válasz7ms13012 KiB
110Futási hiba82ms37116 KiB
111Futási hiba82ms37120 KiB
112Futási hiba82ms37120 KiB
113Futási hiba89ms37028 KiB
114Futási hiba90ms37156 KiB
115Futási hiba83ms37296 KiB
116Hibás válasz92ms37216 KiB
117Hibás válasz92ms37320 KiB
118Hibás válasz90ms37304 KiB
119Hibás válasz86ms37316 KiB
120Hibás válasz92ms37432 KiB
121Hibás válasz92ms37312 KiB
122Futási hiba87ms37428 KiB
123Hibás válasz86ms37424 KiB
124Futási hiba90ms37552 KiB
125Hibás válasz90ms37424 KiB
126Futási hiba90ms37688 KiB
127Futási hiba86ms37832 KiB
128Futási hiba90ms37688 KiB
129Futási hiba85ms37640 KiB
130Hibás válasz83ms37644 KiB
131Elfogadva82ms37644 KiB
132Hibás válasz90ms37648 KiB