6669 2023. 12. 15 18:48:20 szil Pac-Man cpp17 Futási hiba 37/100 2.026s 151596 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 Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1912 KiB
2 Elfogadva 3ms 2248 KiB
3 Elfogadva 3ms 2568 KiB
subtask2 18/18
4 Elfogadva 3ms 2772 KiB
5 Elfogadva 3ms 3560 KiB
6 Elfogadva 3ms 3448 KiB
7 Elfogadva 3ms 3256 KiB
8 Elfogadva 3ms 3456 KiB
9 Elfogadva 3ms 3744 KiB
10 Elfogadva 3ms 3764 KiB
11 Elfogadva 3ms 3592 KiB
12 Elfogadva 3ms 3608 KiB
13 Elfogadva 3ms 4352 KiB
subtask3 19/19
14 Elfogadva 4ms 6012 KiB
15 Elfogadva 4ms 4652 KiB
16 Elfogadva 25ms 4660 KiB
17 Elfogadva 10ms 4360 KiB
18 Elfogadva 2.026s 4408 KiB
19 Elfogadva 1.909s 4296 KiB
20 Elfogadva 3ms 4656 KiB
21 Elfogadva 30ms 4428 KiB
22 Elfogadva 624ms 4676 KiB
23 Elfogadva 21ms 4536 KiB
24 Elfogadva 270ms 4260 KiB
25 Elfogadva 32ms 4268 KiB
26 Elfogadva 3ms 4816 KiB
subtask4 0/24
27 Elfogadva 254ms 43276 KiB
28 Elfogadva 9ms 7008 KiB
29 Futási hiba 521ms 103756 KiB
30 Futási hiba 474ms 105508 KiB
31 Futási hiba 486ms 101200 KiB
32 Futási hiba 462ms 104876 KiB
33 Elfogadva 4ms 5532 KiB
34 Elfogadva 246ms 43948 KiB
35 Futási hiba 504ms 102692 KiB
36 Elfogadva 261ms 43844 KiB
37 Futási hiba 467ms 99980 KiB
38 Futási hiba 467ms 96308 KiB
39 Elfogadva 4ms 4924 KiB
subtask5 0/22
40 Elfogadva 238ms 29748 KiB
41 Elfogadva 4ms 4932 KiB
42 Elfogadva 52ms 11128 KiB
43 Elfogadva 196ms 24752 KiB
44 Futási hiba 418ms 60516 KiB
45 Futási hiba 419ms 60544 KiB
46 Elfogadva 3ms 4984 KiB
47 Elfogadva 3ms 4716 KiB
48 Elfogadva 34ms 8852 KiB
49 Elfogadva 186ms 22852 KiB
50 Elfogadva 201ms 24796 KiB
51 Elfogadva 199ms 24524 KiB
52 Futási hiba 430ms 61012 KiB
53 Elfogadva 3ms 4988 KiB
subtask6 0/17
54 Elfogadva 423ms 84752 KiB
55 Futási hiba 617ms 150776 KiB
56 Elfogadva 219ms 27020 KiB
57 Elfogadva 210ms 25104 KiB
58 Elfogadva 212ms 25328 KiB
59 Futási hiba 462ms 61344 KiB
60 Futási hiba 623ms 151596 KiB
61 Elfogadva 229ms 27616 KiB
62 Elfogadva 206ms 25688 KiB
63 Elfogadva 214ms 25280 KiB
64 Futási hiba 439ms 59892 KiB
65 Futási hiba 430ms 61596 KiB
66 Elfogadva 379ms 64816 KiB