100182024-03-24 11:21:55111Rajzcpp17Elfogadva 20/100127ms44280 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

struct DSU {
	vector<int> v;
	vector<vector<int>> c;

	DSU(int n) : v(n), c(n) {
		for (int i = 0; i < n; i++) {
			v[i] = i;
			c[i].push_back(i);
		}
	}

	int find(int a) {
		return v[a] == a ? a : v[a] = find(v[a]);
	}

	bool unite(int a, int b) {
		a = find(a);
		b = find(b);
		if (a == b) {
			return true;
		}
		if (c[a].size() < c[b].size()) {
			swap(a, b);
		}
		c[a].insert(c[a].end(), c[b].begin(), c[b].end());
		c[b].clear();
		v[b] = a;
		return false;
	}
};

int sign(int x) {
	return (x > 0) - (x < 0);
}

int cross(int x1, int y1, int x2, int y2) {
	return x1 * y2 - y1 * x2;
}

int orient(int x1, int y1, int x2, int y2, int x3, int y3) {
	return sign(cross(x1 - x2, y1 - y2, x3 - x2, y3 - y2));
}

bool test(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4) {
	int o1 = orient(x1, y1, x2, y2, x3, y3);
	int o2 = orient(x1, y1, x2, y2, x4, y4);
	int o3 = orient(x3, y3, x4, y4, x1, y1);
	int o4 = orient(x3, y3, x4, y4, x2, y2);
	return o1 != o2 && o3 != o4;
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N;
	cin>>N;
	struct Pt{ 
		int x,y; 
	};
	vector<Pt>v(N);
	for(int i=0;i<N;i++){
		cin>>v[i].x>>v[i].y;
	}
	vector<pair<int,pair<int,int>>>e;
	for(int i=0;i<N;i++){
		for(int j=i+1;j<N;j++){
			e.emplace_back((v[i].x-v[j].x)*(v[i].x-v[j].x)+(v[i].y-v[j].y)*(v[i].y-v[j].y),make_pair(i,j));
		}
	}
	sort(e.begin(),e.end());
	DSU dsu(N);
	vector<vector<int>>dp(N,vector<int>(N,0));
	auto T=[&](int i,int j)->bool{
		return test(v[i].x,v[i].y,v[j].x,v[j].y,0,0,1e9+7,1e9+9);
	};
	for(int i=0;i<e.size();){
		int ans=e[i].first;
		while(i<e.size()&&e[i].first==ans){
			auto[a,b]=e[i].second;
			int ca=dsu.find(a),cb=dsu.find(b);
			if(ca==cb){
				if(dp[a][b]^T(a,b)){
					cout<<ans<<'\n';
					return 0;
				}
			}
			else {
				int x=T(a,b);
				for(int i:dsu.c[ca]){
					for(int j:dsu.c[cb]){
						dp[i][j]=dp[j][i]=dp[i][a]^x^dp[j][b];
					}
				}
				dsu.unite(a,b);
			}
			i++;
		}
	}
	cout<<-1<<'\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Elfogadva3ms2060 KiB
subtask220/20
3Elfogadva3ms2284 KiB
4Elfogadva3ms2460 KiB
5Elfogadva3ms2672 KiB
6Elfogadva3ms2884 KiB
7Elfogadva3ms3092 KiB
8Elfogadva3ms3324 KiB
9Elfogadva3ms3416 KiB
10Elfogadva3ms3404 KiB
11Elfogadva2ms3400 KiB
12Elfogadva2ms3404 KiB
subtask30/20
13Elfogadva3ms2284 KiB
14Elfogadva3ms2460 KiB
15Elfogadva3ms2672 KiB
16Elfogadva3ms2884 KiB
17Elfogadva3ms3092 KiB
18Elfogadva3ms3324 KiB
19Elfogadva3ms3416 KiB
20Elfogadva3ms3404 KiB
21Elfogadva2ms3400 KiB
22Elfogadva2ms3404 KiB
23Elfogadva3ms3384 KiB
24Elfogadva3ms3384 KiB
25Elfogadva3ms3472 KiB
26Elfogadva3ms3608 KiB
27Elfogadva2ms3688 KiB
28Elfogadva3ms3688 KiB
29Elfogadva3ms3688 KiB
30Elfogadva3ms3824 KiB
31Elfogadva3ms4028 KiB
subtask40/20
32Elfogadva3ms2284 KiB
33Elfogadva3ms2460 KiB
34Elfogadva3ms2672 KiB
35Elfogadva3ms2884 KiB
36Elfogadva3ms3092 KiB
37Elfogadva3ms3324 KiB
38Elfogadva3ms3416 KiB
39Elfogadva3ms3404 KiB
40Elfogadva2ms3400 KiB
41Elfogadva2ms3404 KiB
42Elfogadva3ms3384 KiB
43Elfogadva3ms3384 KiB
44Elfogadva3ms3472 KiB
45Elfogadva3ms3608 KiB
46Elfogadva2ms3688 KiB
47Elfogadva3ms3688 KiB
48Elfogadva3ms3688 KiB
49Elfogadva3ms3824 KiB
50Elfogadva3ms4028 KiB
51Elfogadva4ms4820 KiB
52Elfogadva3ms4756 KiB
53Elfogadva3ms4788 KiB
54Elfogadva3ms4712 KiB
55Elfogadva4ms5000 KiB
56Elfogadva3ms4964 KiB
57Elfogadva3ms4900 KiB
58Elfogadva3ms4896 KiB
59Elfogadva4ms5196 KiB
60Elfogadva3ms5184 KiB
61Elfogadva3ms5316 KiB
62Elfogadva3ms5284 KiB
63Elfogadva3ms5316 KiB
64Elfogadva3ms5340 KiB
65Elfogadva3ms5312 KiB
66Elfogadva3ms5348 KiB
67Elfogadva3ms5344 KiB
68Elfogadva3ms5596 KiB
69Elfogadva4ms5484 KiB
70Elfogadva3ms5512 KiB
subtask50/40
71Elfogadva3ms2284 KiB
72Elfogadva3ms2460 KiB
73Elfogadva3ms2672 KiB
74Elfogadva3ms2884 KiB
75Elfogadva3ms3092 KiB
76Elfogadva3ms3324 KiB
77Elfogadva3ms3416 KiB
78Elfogadva3ms3404 KiB
79Elfogadva2ms3400 KiB
80Elfogadva2ms3404 KiB
81Elfogadva3ms3384 KiB
82Elfogadva3ms3384 KiB
83Elfogadva3ms3472 KiB
84Elfogadva3ms3608 KiB
85Elfogadva2ms3688 KiB
86Elfogadva3ms3688 KiB
87Elfogadva3ms3688 KiB
88Elfogadva3ms3824 KiB
89Elfogadva3ms4028 KiB
90Elfogadva4ms4820 KiB
91Elfogadva3ms4756 KiB
92Elfogadva3ms4788 KiB
93Elfogadva3ms4712 KiB
94Elfogadva4ms5000 KiB
95Elfogadva3ms4964 KiB
96Elfogadva3ms4900 KiB
97Elfogadva3ms4896 KiB
98Elfogadva4ms5196 KiB
99Elfogadva3ms5184 KiB
100Elfogadva3ms5316 KiB
101Elfogadva3ms5284 KiB
102Elfogadva3ms5316 KiB
103Elfogadva3ms5340 KiB
104Elfogadva3ms5312 KiB
105Elfogadva3ms5348 KiB
106Elfogadva3ms5344 KiB
107Elfogadva3ms5596 KiB
108Elfogadva4ms5484 KiB
109Elfogadva3ms5512 KiB
110Elfogadva107ms44084 KiB
111Elfogadva104ms44248 KiB
112Elfogadva104ms44136 KiB
113Elfogadva104ms44160 KiB
114Elfogadva105ms44184 KiB
115Elfogadva112ms44144 KiB
116Elfogadva97ms44160 KiB
117Elfogadva92ms44124 KiB
118Elfogadva90ms44096 KiB
119Elfogadva93ms44096 KiB
120Elfogadva92ms44108 KiB
121Elfogadva92ms44096 KiB
122Elfogadva90ms44096 KiB
123Elfogadva90ms44136 KiB
124Elfogadva90ms44136 KiB
125Elfogadva90ms44280 KiB
126Elfogadva111ms44096 KiB
127Elfogadva107ms44100 KiB
128Elfogadva111ms44096 KiB
129Elfogadva108ms44112 KiB
130Elfogadva107ms44240 KiB
131Elfogadva127ms44124 KiB
132Elfogadva109ms44128 KiB