109152024-04-18 20:42:26gortomiRajzcpp17Hibás válasz 0/10087ms29796 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);
        return ((x > 0) ^ (ya > yb));
    }
    return xa > 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Hibás válasz3ms2056 KiB
subtask20/20
3Hibás válasz3ms2280 KiB
4Hibás válasz3ms2360 KiB
5Hibás válasz3ms2344 KiB
6Hibás válasz3ms2548 KiB
7Hibás válasz3ms2772 KiB
8Hibás válasz3ms2992 KiB
9Elfogadva3ms3212 KiB
10Hibás válasz3ms3440 KiB
11Elfogadva3ms3488 KiB
12Elfogadva3ms3480 KiB
subtask30/20
13Hibás válasz3ms2280 KiB
14Hibás válasz3ms2360 KiB
15Hibás válasz3ms2344 KiB
16Hibás válasz3ms2548 KiB
17Hibás válasz3ms2772 KiB
18Hibás válasz3ms2992 KiB
19Elfogadva3ms3212 KiB
20Hibás válasz3ms3440 KiB
21Elfogadva3ms3488 KiB
22Elfogadva3ms3480 KiB
23Hibás válasz3ms3616 KiB
24Hibás válasz3ms3828 KiB
25Hibás válasz3ms4184 KiB
26Hibás válasz3ms4160 KiB
27Hibás válasz3ms4140 KiB
28Hibás válasz3ms4220 KiB
29Hibás válasz3ms4352 KiB
30Hibás válasz3ms4432 KiB
31Elfogadva3ms4340 KiB
subtask40/20
32Hibás válasz3ms2280 KiB
33Hibás válasz3ms2360 KiB
34Hibás válasz3ms2344 KiB
35Hibás válasz3ms2548 KiB
36Hibás válasz3ms2772 KiB
37Hibás válasz3ms2992 KiB
38Elfogadva3ms3212 KiB
39Hibás válasz3ms3440 KiB
40Elfogadva3ms3488 KiB
41Elfogadva3ms3480 KiB
42Hibás válasz3ms3616 KiB
43Hibás válasz3ms3828 KiB
44Hibás válasz3ms4184 KiB
45Hibás válasz3ms4160 KiB
46Hibás válasz3ms4140 KiB
47Hibás válasz3ms4220 KiB
48Hibás válasz3ms4352 KiB
49Hibás válasz3ms4432 KiB
50Elfogadva3ms4340 KiB
51Hibás válasz4ms5064 KiB
52Hibás válasz3ms5092 KiB
53Hibás válasz3ms5032 KiB
54Hibás válasz3ms5008 KiB
55Hibás válasz3ms5016 KiB
56Hibás válasz3ms5052 KiB
57Hibás válasz3ms5044 KiB
58Hibás válasz3ms5052 KiB
59Hibás válasz3ms5040 KiB
60Hibás válasz3ms5068 KiB
61Hibás válasz3ms5080 KiB
62Hibás válasz3ms5072 KiB
63Hibás válasz3ms5044 KiB
64Hibás válasz3ms5084 KiB
65Hibás válasz3ms5076 KiB
66Hibás válasz3ms5048 KiB
67Hibás válasz3ms5044 KiB
68Hibás válasz3ms5048 KiB
69Elfogadva3ms5044 KiB
70Hibás válasz4ms5048 KiB
subtask50/40
71Hibás válasz3ms2280 KiB
72Hibás válasz3ms2360 KiB
73Hibás válasz3ms2344 KiB
74Hibás válasz3ms2548 KiB
75Hibás válasz3ms2772 KiB
76Hibás válasz3ms2992 KiB
77Elfogadva3ms3212 KiB
78Hibás válasz3ms3440 KiB
79Elfogadva3ms3488 KiB
80Elfogadva3ms3480 KiB
81Hibás válasz3ms3616 KiB
82Hibás válasz3ms3828 KiB
83Hibás válasz3ms4184 KiB
84Hibás válasz3ms4160 KiB
85Hibás válasz3ms4140 KiB
86Hibás válasz3ms4220 KiB
87Hibás válasz3ms4352 KiB
88Hibás válasz3ms4432 KiB
89Elfogadva3ms4340 KiB
90Hibás válasz4ms5064 KiB
91Hibás válasz3ms5092 KiB
92Hibás válasz3ms5032 KiB
93Hibás válasz3ms5008 KiB
94Hibás válasz3ms5016 KiB
95Hibás válasz3ms5052 KiB
96Hibás válasz3ms5044 KiB
97Hibás válasz3ms5052 KiB
98Hibás válasz3ms5040 KiB
99Hibás válasz3ms5068 KiB
100Hibás válasz3ms5080 KiB
101Hibás válasz3ms5072 KiB
102Hibás válasz3ms5044 KiB
103Hibás válasz3ms5084 KiB
104Hibás válasz3ms5076 KiB
105Hibás válasz3ms5048 KiB
106Hibás válasz3ms5044 KiB
107Hibás válasz3ms5048 KiB
108Elfogadva3ms5044 KiB
109Hibás válasz4ms5048 KiB
110Hibás válasz86ms29272 KiB
111Hibás válasz85ms29256 KiB
112Hibás válasz85ms29316 KiB
113Hibás válasz85ms29256 KiB
114Hibás válasz85ms29304 KiB
115Hibás válasz85ms29308 KiB
116Hibás válasz86ms29300 KiB
117Hibás válasz86ms29304 KiB
118Hibás válasz86ms29300 KiB
119Hibás válasz87ms29256 KiB
120Hibás válasz87ms29252 KiB
121Hibás válasz87ms29256 KiB
122Hibás válasz87ms29252 KiB
123Hibás válasz87ms29320 KiB
124Hibás válasz86ms29276 KiB
125Hibás válasz83ms29716 KiB
126Hibás válasz86ms29796 KiB
127Hibás válasz82ms29644 KiB
128Hibás válasz87ms29572 KiB
129Hibás válasz82ms29748 KiB
130Hibás válasz86ms29684 KiB
131Elfogadva79ms29680 KiB
132Hibás válasz86ms29676 KiB