235532026-01-24 17:53:45algoproMobilNet (50 pont)cpp17Elfogadva 50/5082ms11520 KiB
// UUID: a93383c0-3bc3-42e6-8d84-dff2fd7bed3c
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int n, ans = 0, cnt = 0;
vector <vector <int>> s;
vector <vector <int>> e;
vector <int> p(2e5, 0);
vector <int> sz(2e5, 1);

void get_edges() {
	sort(s.begin(), s.end());
	for (int i = 0; i < n - 1; i++) {
		if (s[i][0] != s[i + 1][0]) continue;
		e.push_back({ s[i + 1][1] - s[i][1],s[i][2], s[i + 1][2] });
	}
}

int holvan(int a) {
	return (a == p[a] ? a : p[a] = holvan(p[a]));
}

void unio(int a, int b, int w) {
	a = holvan(a);
	b = holvan(b);
	if (a == b) return;
	if (sz[a] > sz[b]) swap(a, b);
	p[a] = b;
	sz[b] += sz[a];
	if (w == ans) cnt++;
	else { ans = w; cnt = 1; }
}

int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cin >> n;
	int x, y;
	for (int i = 1; i <= n; i++) {
		cin >> x >> y;
		s.push_back({ x,y,i });
	}
	get_edges();
	for (auto& v : s) swap(v[0], v[1]);
	get_edges();
	sort(e.begin(), e.end());
	for (int i = 1; i <= n; i++) p[i] = i;
	for (auto& v : e) unio(v[1], v[2], v[0]);
	cout << ans << "\n" << cnt;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/02ms2036 KiB
2Elfogadva0/08ms2612 KiB
3Elfogadva2/22ms1848 KiB
4Elfogadva2/23ms1844 KiB
5Elfogadva2/22ms2004 KiB
6Elfogadva2/23ms1844 KiB
7Elfogadva2/23ms1844 KiB
8Elfogadva2/23ms2100 KiB
9Elfogadva2/24ms2100 KiB
10Elfogadva2/24ms2356 KiB
11Elfogadva2/26ms2356 KiB
12Elfogadva2/28ms2660 KiB
13Elfogadva3/314ms3496 KiB
14Elfogadva3/324ms4576 KiB
15Elfogadva3/328ms4984 KiB
16Elfogadva3/335ms5948 KiB
17Elfogadva3/348ms6924 KiB
18Elfogadva3/356ms9084 KiB
19Elfogadva3/364ms9548 KiB
20Elfogadva3/382ms11520 KiB
21Elfogadva3/371ms10216 KiB
22Elfogadva3/368ms9896 KiB