261842026-03-20 14:08:58LazurAndrasRajzcpp17Elfogadva 100/100158ms8836 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

struct Point{
    int x, y;
};

const int N = 1001;
vector<Point>v(N);
vector<pair<int, int>>p;
vector<int>parent(2*N), s(2*N, 1);

int fordul(Point a, Point b, Point c)
{
    int w = (b.x - a.x) * (c.y - a.y) - (b.y - a.y) * (c.x - a.x);
    if(w < 0) return -1;
    if(w > 0) return 1;
    return 0;
}

bool metsz(Point a, Point b, Point c, Point d)
{
    return (fordul(a, b, c) * fordul(a, b, d) == -1 && fordul(c, d, a) * fordul(c, d, b) == -1);
}

int dist(Point a, Point b)
{
    return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);
}

bool srt(pair<int, int>a, pair<int, int>b)
{
    pair<Point, Point> x = {v[a.first], v[a.second]}, y = {v[b.first], v[b.second]};
    return dist(x.first, x.second) < dist(y.first, y.second);
}

int holvan(int a)
{
    if(a == parent[a]) return a;
    parent[a] = holvan(parent[a]);
    return parent[a];
}

bool unio(int a, int b)
{
    int x = holvan(a), y = holvan(b);
    if(x != y)
    {
        if(s[x] < s[y]) swap(x, y);
        s[x] += s[y];
        parent[y] = x;
        return 0;
    }
    return 1;
}

signed main() {
    ios::sync_with_stdio(false);cin.tie(nullptr);
	int n; cin >> n;
    for(int i = 1; i <= n; i++)
    {
        cin >> v[i].x >> v[i].y;
    }
    for(int i = 1; i <= n; i++)
        for(int j = i+1; j <= n; j++)
            p.push_back({i, j});
    sort(p.begin(), p.end(), srt);
    for(int i = 1; i <= 2*n; i++) parent[i] = i;
    Point origo = {0LL, 0LL};
    Point k = {1000000001LL, 1LL};
    for(int i = 0; i < p.size(); i++)
    {
        bool x = metsz(origo, k, v[p[i].first], v[p[i].second]);
        int p1 = p[i].first, p2 = p[i].second, p3 = p1+n, p4 = p2+n;
        if(x) swap(p2, p4);
        if(unio(p1, p2) || unio(p3, p4))
        {
            bool ans = (holvan(p1) == holvan(p1+n));
            if(ans) {cout << dist(v[p[i].first], v[p[i].second]); return 0;}
        }
    }
    cout << -1;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms316 KiB
subtask220/20
3Elfogadva1ms316 KiB
4Elfogadva1ms316 KiB
5Elfogadva1ms316 KiB
6Elfogadva1ms316 KiB
7Elfogadva1ms316 KiB
8Elfogadva1ms316 KiB
9Elfogadva1ms428 KiB
10Elfogadva1ms316 KiB
11Elfogadva1ms560 KiB
12Elfogadva1ms316 KiB
subtask320/20
13Elfogadva1ms316 KiB
14Elfogadva1ms316 KiB
15Elfogadva1ms316 KiB
16Elfogadva1ms316 KiB
17Elfogadva1ms316 KiB
18Elfogadva1ms316 KiB
19Elfogadva1ms428 KiB
20Elfogadva1ms316 KiB
21Elfogadva1ms560 KiB
22Elfogadva1ms316 KiB
23Elfogadva1ms316 KiB
24Elfogadva1ms316 KiB
25Elfogadva1ms316 KiB
26Elfogadva1ms316 KiB
27Elfogadva1ms316 KiB
28Elfogadva1ms316 KiB
29Elfogadva1ms316 KiB
30Elfogadva1ms508 KiB
31Elfogadva1ms316 KiB
subtask420/20
32Elfogadva1ms316 KiB
33Elfogadva1ms316 KiB
34Elfogadva1ms316 KiB
35Elfogadva1ms316 KiB
36Elfogadva1ms316 KiB
37Elfogadva1ms316 KiB
38Elfogadva1ms428 KiB
39Elfogadva1ms316 KiB
40Elfogadva1ms560 KiB
41Elfogadva1ms316 KiB
42Elfogadva1ms316 KiB
43Elfogadva1ms316 KiB
44Elfogadva1ms316 KiB
45Elfogadva1ms316 KiB
46Elfogadva1ms316 KiB
47Elfogadva1ms316 KiB
48Elfogadva1ms316 KiB
49Elfogadva1ms508 KiB
50Elfogadva1ms316 KiB
51Elfogadva2ms604 KiB
52Elfogadva2ms564 KiB
53Elfogadva2ms564 KiB
54Elfogadva2ms564 KiB
55Elfogadva2ms564 KiB
56Elfogadva2ms572 KiB
57Elfogadva2ms564 KiB
58Elfogadva2ms468 KiB
59Elfogadva3ms756 KiB
60Elfogadva2ms564 KiB
61Elfogadva3ms568 KiB
62Elfogadva3ms564 KiB
63Elfogadva2ms580 KiB
64Elfogadva3ms580 KiB
65Elfogadva2ms516 KiB
66Elfogadva3ms568 KiB
67Elfogadva2ms564 KiB
68Elfogadva2ms580 KiB
69Elfogadva2ms564 KiB
70Elfogadva2ms564 KiB
subtask540/40
71Elfogadva1ms316 KiB
72Elfogadva1ms316 KiB
73Elfogadva1ms316 KiB
74Elfogadva1ms316 KiB
75Elfogadva1ms316 KiB
76Elfogadva1ms316 KiB
77Elfogadva1ms428 KiB
78Elfogadva1ms316 KiB
79Elfogadva1ms560 KiB
80Elfogadva1ms316 KiB
81Elfogadva1ms316 KiB
82Elfogadva1ms316 KiB
83Elfogadva1ms316 KiB
84Elfogadva1ms316 KiB
85Elfogadva1ms316 KiB
86Elfogadva1ms316 KiB
87Elfogadva1ms316 KiB
88Elfogadva1ms508 KiB
89Elfogadva1ms316 KiB
90Elfogadva2ms604 KiB
91Elfogadva2ms564 KiB
92Elfogadva2ms564 KiB
93Elfogadva2ms564 KiB
94Elfogadva2ms564 KiB
95Elfogadva2ms572 KiB
96Elfogadva2ms564 KiB
97Elfogadva2ms468 KiB
98Elfogadva3ms756 KiB
99Elfogadva2ms564 KiB
100Elfogadva3ms568 KiB
101Elfogadva3ms564 KiB
102Elfogadva2ms580 KiB
103Elfogadva3ms580 KiB
104Elfogadva2ms516 KiB
105Elfogadva3ms568 KiB
106Elfogadva2ms564 KiB
107Elfogadva2ms580 KiB
108Elfogadva2ms564 KiB
109Elfogadva2ms564 KiB
110Elfogadva138ms8600 KiB
111Elfogadva141ms8796 KiB
112Elfogadva137ms8600 KiB
113Elfogadva141ms8672 KiB
114Elfogadva138ms8732 KiB
115Elfogadva140ms8600 KiB
116Elfogadva145ms8792 KiB
117Elfogadva148ms8600 KiB
118Elfogadva149ms8600 KiB
119Elfogadva143ms8636 KiB
120Elfogadva144ms8600 KiB
121Elfogadva146ms8672 KiB
122Elfogadva148ms8608 KiB
123Elfogadva145ms8600 KiB
124Elfogadva143ms8836 KiB
125Elfogadva145ms8600 KiB
126Elfogadva155ms8600 KiB
127Elfogadva153ms8784 KiB
128Elfogadva151ms8600 KiB
129Elfogadva152ms8600 KiB
130Elfogadva153ms8792 KiB
131Elfogadva115ms8608 KiB
132Elfogadva158ms8600 KiB