55532023-07-25 12:43:05szilRajzcpp17Elfogadva 100/10093ms30752 KiB
#include <bits/stdc++.h>
#define xy pair<ll, ll>

using ll = long long;
using namespace std;

const int MAXN = 1001;
const ll INF = 1e8;

struct Edge {
    ll dist; int u, v;
    bool cross;
};

int dsu[2*MAXN];
vector<xy> points;
vector<Edge> edges;

int find(int u) {
    return dsu[u]==u?u:dsu[u]=find(dsu[u]);
}

void unio(int u, int v) {
    u = find(u); v = find(v);
    if (u != v) {
        dsu[u] = v;
    }
}

bool cross(ll x1, ll y1, ll x2, ll y2) {
    return x1*y2 - x2*y1 < 0;
}

int main() {
    cin.sync_with_stdio(0); cin.tie(0);
    int n; cin >> n;
    iota(dsu, dsu+2*MAXN, 0);
    for (int i = 1; i <= n; i++) {
        ll x, y; cin >> x >> y;
        points.emplace_back(x, y);
    }
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            Edge e;
            e.u = i; e.v = j;
            auto [x1, y1] = points[i];
            auto [x2, y2] = points[j];
            ll dx = x1 - x2;
            ll dy = y1 - y2;
            e.dist = dx*dx + dy*dy;
            if (y1 > y2) {
                swap(x1, x2);
                swap(y1, y2);
            }
            if (y1 <= 0 && y2 > 0 && cross(-x1, -y1, x2-x1, y2-y1)) e.cross = true;
            else e.cross = false;
            edges.emplace_back(e);
        }
    }
    sort(edges.begin(), edges.end(), [](Edge a, Edge b){
        return a.dist < b.dist;
    });
    for (Edge e : edges) {
        if (e.cross) {
            unio(e.u, e.v+n);
            unio(e.u+n, e.v);
        } else {
            unio(e.u, e.v);
            unio(e.u+n, e.v+n);
        }
        if (find(e.u) == find(e.u+n) || find(e.v) == find(e.v+n)) {
            cout << e.dist << "\n";
            return 0;
        }
    }
    cout << "-1\n";
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1904 KiB
2Elfogadva3ms2104 KiB
subtask220/20
3Elfogadva3ms2444 KiB
4Elfogadva3ms2500 KiB
5Elfogadva3ms2588 KiB
6Elfogadva3ms2676 KiB
7Elfogadva3ms2808 KiB
8Elfogadva3ms3040 KiB
9Elfogadva3ms3388 KiB
10Elfogadva3ms3484 KiB
11Elfogadva3ms3696 KiB
12Elfogadva3ms3768 KiB
subtask320/20
13Elfogadva3ms2444 KiB
14Elfogadva3ms2500 KiB
15Elfogadva3ms2588 KiB
16Elfogadva3ms2676 KiB
17Elfogadva3ms2808 KiB
18Elfogadva3ms3040 KiB
19Elfogadva3ms3388 KiB
20Elfogadva3ms3484 KiB
21Elfogadva3ms3696 KiB
22Elfogadva3ms3768 KiB
23Elfogadva3ms3772 KiB
24Elfogadva3ms3844 KiB
25Elfogadva3ms3852 KiB
26Elfogadva2ms3856 KiB
27Elfogadva3ms3944 KiB
28Elfogadva3ms4080 KiB
29Elfogadva2ms3980 KiB
30Elfogadva3ms4056 KiB
31Elfogadva3ms3792 KiB
subtask420/20
32Elfogadva3ms2444 KiB
33Elfogadva3ms2500 KiB
34Elfogadva3ms2588 KiB
35Elfogadva3ms2676 KiB
36Elfogadva3ms2808 KiB
37Elfogadva3ms3040 KiB
38Elfogadva3ms3388 KiB
39Elfogadva3ms3484 KiB
40Elfogadva3ms3696 KiB
41Elfogadva3ms3768 KiB
42Elfogadva3ms3772 KiB
43Elfogadva3ms3844 KiB
44Elfogadva3ms3852 KiB
45Elfogadva2ms3856 KiB
46Elfogadva3ms3944 KiB
47Elfogadva3ms4080 KiB
48Elfogadva2ms3980 KiB
49Elfogadva3ms4056 KiB
50Elfogadva3ms3792 KiB
51Elfogadva3ms4604 KiB
52Elfogadva3ms4564 KiB
53Elfogadva3ms4500 KiB
54Elfogadva3ms4508 KiB
55Elfogadva3ms4524 KiB
56Elfogadva3ms4528 KiB
57Elfogadva3ms4768 KiB
58Elfogadva3ms4788 KiB
59Elfogadva3ms4776 KiB
60Elfogadva3ms5048 KiB
61Elfogadva3ms5008 KiB
62Elfogadva3ms5272 KiB
63Elfogadva3ms5224 KiB
64Elfogadva3ms5144 KiB
65Elfogadva3ms5408 KiB
66Elfogadva3ms5368 KiB
67Elfogadva3ms5376 KiB
68Elfogadva3ms5372 KiB
69Elfogadva3ms5632 KiB
70Elfogadva3ms5592 KiB
subtask540/40
71Elfogadva3ms2444 KiB
72Elfogadva3ms2500 KiB
73Elfogadva3ms2588 KiB
74Elfogadva3ms2676 KiB
75Elfogadva3ms2808 KiB
76Elfogadva3ms3040 KiB
77Elfogadva3ms3388 KiB
78Elfogadva3ms3484 KiB
79Elfogadva3ms3696 KiB
80Elfogadva3ms3768 KiB
81Elfogadva3ms3772 KiB
82Elfogadva3ms3844 KiB
83Elfogadva3ms3852 KiB
84Elfogadva2ms3856 KiB
85Elfogadva3ms3944 KiB
86Elfogadva3ms4080 KiB
87Elfogadva2ms3980 KiB
88Elfogadva3ms4056 KiB
89Elfogadva3ms3792 KiB
90Elfogadva3ms4604 KiB
91Elfogadva3ms4564 KiB
92Elfogadva3ms4500 KiB
93Elfogadva3ms4508 KiB
94Elfogadva3ms4524 KiB
95Elfogadva3ms4528 KiB
96Elfogadva3ms4768 KiB
97Elfogadva3ms4788 KiB
98Elfogadva3ms4776 KiB
99Elfogadva3ms5048 KiB
100Elfogadva3ms5008 KiB
101Elfogadva3ms5272 KiB
102Elfogadva3ms5224 KiB
103Elfogadva3ms5144 KiB
104Elfogadva3ms5408 KiB
105Elfogadva3ms5368 KiB
106Elfogadva3ms5376 KiB
107Elfogadva3ms5372 KiB
108Elfogadva3ms5632 KiB
109Elfogadva3ms5592 KiB
110Elfogadva82ms29848 KiB
111Elfogadva82ms29860 KiB
112Elfogadva82ms29912 KiB
113Elfogadva82ms29920 KiB
114Elfogadva82ms29936 KiB
115Elfogadva86ms29988 KiB
116Elfogadva86ms30032 KiB
117Elfogadva85ms30028 KiB
118Elfogadva85ms30040 KiB
119Elfogadva85ms30064 KiB
120Elfogadva85ms30112 KiB
121Elfogadva90ms30116 KiB
122Elfogadva90ms30148 KiB
123Elfogadva90ms30184 KiB
124Elfogadva90ms30172 KiB
125Elfogadva86ms30224 KiB
126Elfogadva90ms30240 KiB
127Elfogadva90ms30288 KiB
128Elfogadva92ms30344 KiB
129Elfogadva90ms30484 KiB
130Elfogadva90ms30480 KiB
131Elfogadva76ms30744 KiB
132Elfogadva93ms30752 KiB