109152024-04-18 20:42:26gortomiRajzcpp17Wrong answer 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";
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1828 KiB
2Wrong answer3ms2056 KiB
subtask20/20
3Wrong answer3ms2280 KiB
4Wrong answer3ms2360 KiB
5Wrong answer3ms2344 KiB
6Wrong answer3ms2548 KiB
7Wrong answer3ms2772 KiB
8Wrong answer3ms2992 KiB
9Accepted3ms3212 KiB
10Wrong answer3ms3440 KiB
11Accepted3ms3488 KiB
12Accepted3ms3480 KiB
subtask30/20
13Wrong answer3ms2280 KiB
14Wrong answer3ms2360 KiB
15Wrong answer3ms2344 KiB
16Wrong answer3ms2548 KiB
17Wrong answer3ms2772 KiB
18Wrong answer3ms2992 KiB
19Accepted3ms3212 KiB
20Wrong answer3ms3440 KiB
21Accepted3ms3488 KiB
22Accepted3ms3480 KiB
23Wrong answer3ms3616 KiB
24Wrong answer3ms3828 KiB
25Wrong answer3ms4184 KiB
26Wrong answer3ms4160 KiB
27Wrong answer3ms4140 KiB
28Wrong answer3ms4220 KiB
29Wrong answer3ms4352 KiB
30Wrong answer3ms4432 KiB
31Accepted3ms4340 KiB
subtask40/20
32Wrong answer3ms2280 KiB
33Wrong answer3ms2360 KiB
34Wrong answer3ms2344 KiB
35Wrong answer3ms2548 KiB
36Wrong answer3ms2772 KiB
37Wrong answer3ms2992 KiB
38Accepted3ms3212 KiB
39Wrong answer3ms3440 KiB
40Accepted3ms3488 KiB
41Accepted3ms3480 KiB
42Wrong answer3ms3616 KiB
43Wrong answer3ms3828 KiB
44Wrong answer3ms4184 KiB
45Wrong answer3ms4160 KiB
46Wrong answer3ms4140 KiB
47Wrong answer3ms4220 KiB
48Wrong answer3ms4352 KiB
49Wrong answer3ms4432 KiB
50Accepted3ms4340 KiB
51Wrong answer4ms5064 KiB
52Wrong answer3ms5092 KiB
53Wrong answer3ms5032 KiB
54Wrong answer3ms5008 KiB
55Wrong answer3ms5016 KiB
56Wrong answer3ms5052 KiB
57Wrong answer3ms5044 KiB
58Wrong answer3ms5052 KiB
59Wrong answer3ms5040 KiB
60Wrong answer3ms5068 KiB
61Wrong answer3ms5080 KiB
62Wrong answer3ms5072 KiB
63Wrong answer3ms5044 KiB
64Wrong answer3ms5084 KiB
65Wrong answer3ms5076 KiB
66Wrong answer3ms5048 KiB
67Wrong answer3ms5044 KiB
68Wrong answer3ms5048 KiB
69Accepted3ms5044 KiB
70Wrong answer4ms5048 KiB
subtask50/40
71Wrong answer3ms2280 KiB
72Wrong answer3ms2360 KiB
73Wrong answer3ms2344 KiB
74Wrong answer3ms2548 KiB
75Wrong answer3ms2772 KiB
76Wrong answer3ms2992 KiB
77Accepted3ms3212 KiB
78Wrong answer3ms3440 KiB
79Accepted3ms3488 KiB
80Accepted3ms3480 KiB
81Wrong answer3ms3616 KiB
82Wrong answer3ms3828 KiB
83Wrong answer3ms4184 KiB
84Wrong answer3ms4160 KiB
85Wrong answer3ms4140 KiB
86Wrong answer3ms4220 KiB
87Wrong answer3ms4352 KiB
88Wrong answer3ms4432 KiB
89Accepted3ms4340 KiB
90Wrong answer4ms5064 KiB
91Wrong answer3ms5092 KiB
92Wrong answer3ms5032 KiB
93Wrong answer3ms5008 KiB
94Wrong answer3ms5016 KiB
95Wrong answer3ms5052 KiB
96Wrong answer3ms5044 KiB
97Wrong answer3ms5052 KiB
98Wrong answer3ms5040 KiB
99Wrong answer3ms5068 KiB
100Wrong answer3ms5080 KiB
101Wrong answer3ms5072 KiB
102Wrong answer3ms5044 KiB
103Wrong answer3ms5084 KiB
104Wrong answer3ms5076 KiB
105Wrong answer3ms5048 KiB
106Wrong answer3ms5044 KiB
107Wrong answer3ms5048 KiB
108Accepted3ms5044 KiB
109Wrong answer4ms5048 KiB
110Wrong answer86ms29272 KiB
111Wrong answer85ms29256 KiB
112Wrong answer85ms29316 KiB
113Wrong answer85ms29256 KiB
114Wrong answer85ms29304 KiB
115Wrong answer85ms29308 KiB
116Wrong answer86ms29300 KiB
117Wrong answer86ms29304 KiB
118Wrong answer86ms29300 KiB
119Wrong answer87ms29256 KiB
120Wrong answer87ms29252 KiB
121Wrong answer87ms29256 KiB
122Wrong answer87ms29252 KiB
123Wrong answer87ms29320 KiB
124Wrong answer86ms29276 KiB
125Wrong answer83ms29716 KiB
126Wrong answer86ms29796 KiB
127Wrong answer82ms29644 KiB
128Wrong answer87ms29572 KiB
129Wrong answer82ms29748 KiB
130Wrong answer86ms29684 KiB
131Accepted79ms29680 KiB
132Wrong answer86ms29676 KiB