10916 2024. 04. 18 20:50:33 gortomi Rajz cpp17 Hibás válasz 0/100 97ms 30024 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 1824 KiB
2 Elfogadva 3ms 2068 KiB
subtask2 0/20
3 Elfogadva 3ms 2276 KiB
4 Hibás válasz 3ms 2316 KiB
5 Elfogadva 3ms 2448 KiB
6 Elfogadva 3ms 2672 KiB
7 Hibás válasz 3ms 2768 KiB
8 Elfogadva 3ms 2852 KiB
9 Hibás válasz 3ms 2984 KiB
10 Hibás válasz 3ms 3196 KiB
11 Elfogadva 3ms 3268 KiB
12 Elfogadva 3ms 3272 KiB
subtask3 0/20
13 Elfogadva 3ms 2276 KiB
14 Hibás válasz 3ms 2316 KiB
15 Elfogadva 3ms 2448 KiB
16 Elfogadva 3ms 2672 KiB
17 Hibás válasz 3ms 2768 KiB
18 Elfogadva 3ms 2852 KiB
19 Hibás válasz 3ms 2984 KiB
20 Hibás válasz 3ms 3196 KiB
21 Elfogadva 3ms 3268 KiB
22 Elfogadva 3ms 3272 KiB
23 Elfogadva 3ms 3420 KiB
24 Elfogadva 3ms 3612 KiB
25 Hibás válasz 3ms 3824 KiB
26 Hibás válasz 3ms 3912 KiB
27 Elfogadva 3ms 4124 KiB
28 Elfogadva 3ms 4220 KiB
29 Elfogadva 3ms 4436 KiB
30 Elfogadva 3ms 4432 KiB
31 Elfogadva 3ms 4412 KiB
subtask4 0/20
32 Elfogadva 3ms 2276 KiB
33 Hibás válasz 3ms 2316 KiB
34 Elfogadva 3ms 2448 KiB
35 Elfogadva 3ms 2672 KiB
36 Hibás válasz 3ms 2768 KiB
37 Elfogadva 3ms 2852 KiB
38 Hibás válasz 3ms 2984 KiB
39 Hibás válasz 3ms 3196 KiB
40 Elfogadva 3ms 3268 KiB
41 Elfogadva 3ms 3272 KiB
42 Elfogadva 3ms 3420 KiB
43 Elfogadva 3ms 3612 KiB
44 Hibás válasz 3ms 3824 KiB
45 Hibás válasz 3ms 3912 KiB
46 Elfogadva 3ms 4124 KiB
47 Elfogadva 3ms 4220 KiB
48 Elfogadva 3ms 4436 KiB
49 Elfogadva 3ms 4432 KiB
50 Elfogadva 3ms 4412 KiB
51 Elfogadva 3ms 4792 KiB
52 Elfogadva 3ms 4816 KiB
53 Elfogadva 3ms 4812 KiB
54 Elfogadva 3ms 5108 KiB
55 Elfogadva 3ms 5112 KiB
56 Elfogadva 3ms 5108 KiB
57 Elfogadva 3ms 5044 KiB
58 Elfogadva 3ms 5036 KiB
59 Elfogadva 3ms 5008 KiB
60 Elfogadva 3ms 5272 KiB
61 Hibás válasz 3ms 5220 KiB
62 Hibás válasz 3ms 5212 KiB
63 Hibás válasz 3ms 5244 KiB
64 Hibás válasz 3ms 5252 KiB
65 Hibás válasz 3ms 5216 KiB
66 Elfogadva 4ms 5220 KiB
67 Elfogadva 4ms 5496 KiB
68 Elfogadva 4ms 5500 KiB
69 Elfogadva 3ms 5532 KiB
70 Elfogadva 3ms 5556 KiB
subtask5 0/40
71 Elfogadva 3ms 2276 KiB
72 Hibás válasz 3ms 2316 KiB
73 Elfogadva 3ms 2448 KiB
74 Elfogadva 3ms 2672 KiB
75 Hibás válasz 3ms 2768 KiB
76 Elfogadva 3ms 2852 KiB
77 Hibás válasz 3ms 2984 KiB
78 Hibás válasz 3ms 3196 KiB
79 Elfogadva 3ms 3268 KiB
80 Elfogadva 3ms 3272 KiB
81 Elfogadva 3ms 3420 KiB
82 Elfogadva 3ms 3612 KiB
83 Hibás válasz 3ms 3824 KiB
84 Hibás válasz 3ms 3912 KiB
85 Elfogadva 3ms 4124 KiB
86 Elfogadva 3ms 4220 KiB
87 Elfogadva 3ms 4436 KiB
88 Elfogadva 3ms 4432 KiB
89 Elfogadva 3ms 4412 KiB
90 Elfogadva 3ms 4792 KiB
91 Elfogadva 3ms 4816 KiB
92 Elfogadva 3ms 4812 KiB
93 Elfogadva 3ms 5108 KiB
94 Elfogadva 3ms 5112 KiB
95 Elfogadva 3ms 5108 KiB
96 Elfogadva 3ms 5044 KiB
97 Elfogadva 3ms 5036 KiB
98 Elfogadva 3ms 5008 KiB
99 Elfogadva 3ms 5272 KiB
100 Hibás válasz 3ms 5220 KiB
101 Hibás válasz 3ms 5212 KiB
102 Hibás válasz 3ms 5244 KiB
103 Hibás válasz 3ms 5252 KiB
104 Hibás válasz 3ms 5216 KiB
105 Elfogadva 4ms 5220 KiB
106 Elfogadva 4ms 5496 KiB
107 Elfogadva 4ms 5500 KiB
108 Elfogadva 3ms 5532 KiB
109 Elfogadva 3ms 5556 KiB
110 Elfogadva 86ms 29684 KiB
111 Hibás válasz 86ms 29736 KiB
112 Elfogadva 82ms 29784 KiB
113 Elfogadva 85ms 29672 KiB
114 Elfogadva 82ms 29664 KiB
115 Hibás válasz 85ms 29712 KiB
116 Elfogadva 90ms 29716 KiB
117 Elfogadva 85ms 29724 KiB
118 Elfogadva 89ms 29716 KiB
119 Elfogadva 85ms 29716 KiB
120 Elfogadva 89ms 29712 KiB
121 Elfogadva 90ms 29684 KiB
122 Hibás válasz 90ms 29740 KiB
123 Hibás válasz 85ms 29736 KiB
124 Hibás válasz 89ms 29712 KiB
125 Hibás válasz 85ms 29888 KiB
126 Elfogadva 93ms 30016 KiB
127 Elfogadva 93ms 30020 KiB
128 Elfogadva 96ms 30024 KiB
129 Elfogadva 93ms 29884 KiB
130 Elfogadva 97ms 29928 KiB
131 Elfogadva 75ms 29968 KiB
132 Elfogadva 97ms 29976 KiB