66692023-12-15 18:48:20szilPac-Mancpp17Futási hiba 37/1002.026s151596 KiB


#include <bits/stdc++.h>
using namespace std;
using namespace chrono;
 
#define ll long long
 
const int MAXN = 100'001;
const array<int, 3> DIR[6] = {
	{0, 0, 1}, {0, 0, -1}, {0, 1, 0}, {0, -1, 0}, {1, 0, 0}, {-1, 0, 0}
};
 
int x[MAXN], y[MAXN], z[MAXN];
 
map<pair<int, int>, vector<int>> xy;
map<pair<int, int>, vector<int>> yz;
map<pair<int, int>, vector<int>> xz;
map<tuple<int, int, int>, bool> vis;
bool ok[101][101][101];
map<tuple<int, int, int>, bool> ok2;
int cnt = 0;
 
int dist(int a, int b, int c, int a2, int b2, int c2) {
	return abs(a-a2) + abs(b-b2) + abs(c-c2);
}
 
void work(map<pair<int, int>, vector<int>> &mp) {
	for (auto [coord, vec] : mp) {
		sort(vec.begin(), vec.end());
		for (int i = 1; i < vec.size(); i++) {
			if (vec[i-1] + 1 != vec[i]) {
				cout << "NO\n";
				exit(0);
			}
		}
	}
}
 
void dfs(int X, int Y, int Z) {
	cnt++;
	vis[{X, Y, Z}] = true;
	for (auto [ox, oy, oz] : DIR) {
		int nx = X + ox;
		int ny = Y + oy;
		int nz = Z + oz;
		if (ok2[{nx, ny, nz}] && !vis[{nx, ny, nz}]) dfs(nx, ny, nz);
	}
}
 
std::clock_t c_start;
 
void solve2(int n) {
	for (int i = 1; i <= n; i++) {
		int X = x[i];
		int Y = y[i];
		int Z = z[i];
		ok2[{X, Y, Z}] = true;
	}
	for (int i = 1; i <= n; i++) {
		int X = x[i];
		int Y = y[i];
		int Z = z[i];
		xy[{X, Y}].emplace_back(Z);
		xz[{X, Z}].emplace_back(Y);
		yz[{Y, Z}].emplace_back(X);
		ok2[{X, Y, Z}] = true;
	}
 
	work(xy);
	work(xz);
	work(yz);
	dfs(x[1], y[1], z[1]);
	std::clock_t c_end = std::clock();
    long long time_elapsed = 1000.0 * (c_end-c_start) / CLOCKS_PER_SEC;
	if (time_elapsed >= 300) {
        exit(1);
		cout << "NO\n";
		exit(0);
	}
	if (cnt != n) {
		cout << "NO\n";
	} else {
		cout << "YES\n";
	}
}
 
void solve() {
	int n; cin >> n;
	int maxe = 0;
	for (int i = 1; i <= n; i++) {
		cin >> x[i];
		maxe = max(maxe, x[i]);
	}
	for (int i = 1; i <= n; i++) {
		cin >> y[i];
		maxe = max(maxe, y[i]);
	}
	for (int i = 1; i <= n; i++) {
		cin >> z[i];
		maxe = max(maxe, z[i]);
	}
	if (n > 7500 || maxe > 100) {
		solve2(n);
		return;
	}
 
	for (int i = 1; i <= n; i++) {
		int X = x[i];
		int Y = y[i];
		int Z = z[i];
		ok[X][Y][Z] = true;
	}
	
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= n; j++) {
			if (i == j) continue;
			bool good = false;
			int X = x[i];
			int Y = y[i];
			int Z = z[i];
			int EX = x[j];
			int EY = y[j];
			int EZ = z[j];
			for (auto [ox, oy, oz] : DIR) {
				int nx = X + ox;
				int ny = Y + oy;
				int nz = Z + oz;
				if (ok[nx][ny][nz] && dist(X, Y, Z, EX, EY, EZ) > dist(nx, ny, nz, EX, EY, EZ)) {
					good = true;
				}
			}
			if (!good) {
				cout << "NO\n";
				exit(0);
			}
		}
	}
 
	cout << "YES\n";
}
 
int main() {
	ios_base::sync_with_stdio(0); cin.tie(0);
	solve();
 

}

RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1912 KiB
2Elfogadva3ms2248 KiB
3Elfogadva3ms2568 KiB
subtask218/18
4Elfogadva3ms2772 KiB
5Elfogadva3ms3560 KiB
6Elfogadva3ms3448 KiB
7Elfogadva3ms3256 KiB
8Elfogadva3ms3456 KiB
9Elfogadva3ms3744 KiB
10Elfogadva3ms3764 KiB
11Elfogadva3ms3592 KiB
12Elfogadva3ms3608 KiB
13Elfogadva3ms4352 KiB
subtask319/19
14Elfogadva4ms6012 KiB
15Elfogadva4ms4652 KiB
16Elfogadva25ms4660 KiB
17Elfogadva10ms4360 KiB
18Elfogadva2.026s4408 KiB
19Elfogadva1.909s4296 KiB
20Elfogadva3ms4656 KiB
21Elfogadva30ms4428 KiB
22Elfogadva624ms4676 KiB
23Elfogadva21ms4536 KiB
24Elfogadva270ms4260 KiB
25Elfogadva32ms4268 KiB
26Elfogadva3ms4816 KiB
subtask40/24
27Elfogadva254ms43276 KiB
28Elfogadva9ms7008 KiB
29Futási hiba521ms103756 KiB
30Futási hiba474ms105508 KiB
31Futási hiba486ms101200 KiB
32Futási hiba462ms104876 KiB
33Elfogadva4ms5532 KiB
34Elfogadva246ms43948 KiB
35Futási hiba504ms102692 KiB
36Elfogadva261ms43844 KiB
37Futási hiba467ms99980 KiB
38Futási hiba467ms96308 KiB
39Elfogadva4ms4924 KiB
subtask50/22
40Elfogadva238ms29748 KiB
41Elfogadva4ms4932 KiB
42Elfogadva52ms11128 KiB
43Elfogadva196ms24752 KiB
44Futási hiba418ms60516 KiB
45Futási hiba419ms60544 KiB
46Elfogadva3ms4984 KiB
47Elfogadva3ms4716 KiB
48Elfogadva34ms8852 KiB
49Elfogadva186ms22852 KiB
50Elfogadva201ms24796 KiB
51Elfogadva199ms24524 KiB
52Futási hiba430ms61012 KiB
53Elfogadva3ms4988 KiB
subtask60/17
54Elfogadva423ms84752 KiB
55Futási hiba617ms150776 KiB
56Elfogadva219ms27020 KiB
57Elfogadva210ms25104 KiB
58Elfogadva212ms25328 KiB
59Futási hiba462ms61344 KiB
60Futási hiba623ms151596 KiB
61Elfogadva229ms27616 KiB
62Elfogadva206ms25688 KiB
63Elfogadva214ms25280 KiB
64Futási hiba439ms59892 KiB
65Futási hiba430ms61596 KiB
66Elfogadva379ms64816 KiB