235512026-01-24 17:48:43zsomborMobilNet (50 pont)cpp17Elfogadva 50/5087ms14136 KiB
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

int n, ans = 0, cnt = 0;
vector <int> x(2e5, 0);
vector <int> y(2e5, 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;
	for (int i = 1; i <= n; i++) {
		cin >> x[i] >> y[i];
		s.push_back({ x[i],y[i],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/04ms3564 KiB
2Elfogadva0/08ms4148 KiB
3Elfogadva2/24ms3564 KiB
4Elfogadva2/24ms3476 KiB
5Elfogadva2/24ms3564 KiB
6Elfogadva2/24ms3380 KiB
7Elfogadva2/24ms3636 KiB
8Elfogadva2/24ms3820 KiB
9Elfogadva2/26ms3892 KiB
10Elfogadva2/26ms3892 KiB
11Elfogadva2/27ms4148 KiB
12Elfogadva2/210ms4356 KiB
13Elfogadva3/314ms5092 KiB
14Elfogadva3/325ms6464 KiB
15Elfogadva3/328ms7064 KiB
16Elfogadva3/337ms8192 KiB
17Elfogadva3/346ms9192 KiB
18Elfogadva3/359ms11464 KiB
19Elfogadva3/363ms12008 KiB
20Elfogadva3/387ms14136 KiB
21Elfogadva3/370ms12776 KiB
22Elfogadva3/370ms12516 KiB