6667 2023. 12. 15 18:46:36 szil Pac-Man cpp17 Hibás válasz 83/100 1.904s 152084 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 >= 650 && time_elapsed <= 800) {
		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 2556 KiB
subtask2 18/18
4 Elfogadva 3ms 2668 KiB
5 Elfogadva 3ms 3456 KiB
6 Elfogadva 3ms 3280 KiB
7 Elfogadva 3ms 3388 KiB
8 Elfogadva 3ms 2980 KiB
9 Elfogadva 3ms 3516 KiB
10 Elfogadva 3ms 3364 KiB
11 Elfogadva 3ms 3436 KiB
12 Elfogadva 3ms 3764 KiB
13 Elfogadva 3ms 4624 KiB
subtask3 19/19
14 Elfogadva 4ms 6100 KiB
15 Elfogadva 4ms 4764 KiB
16 Elfogadva 24ms 4788 KiB
17 Elfogadva 9ms 4660 KiB
18 Elfogadva 1.904s 4908 KiB
19 Elfogadva 1.794s 4904 KiB
20 Elfogadva 3ms 5240 KiB
21 Elfogadva 29ms 5068 KiB
22 Elfogadva 587ms 5236 KiB
23 Elfogadva 20ms 5168 KiB
24 Elfogadva 254ms 5008 KiB
25 Elfogadva 30ms 5204 KiB
26 Elfogadva 3ms 5588 KiB
subtask4 24/24
27 Elfogadva 287ms 44240 KiB
28 Elfogadva 8ms 7772 KiB
29 Elfogadva 514ms 104484 KiB
30 Elfogadva 514ms 106332 KiB
31 Elfogadva 523ms 101688 KiB
32 Elfogadva 513ms 105420 KiB
33 Elfogadva 4ms 6108 KiB
34 Elfogadva 268ms 44536 KiB
35 Elfogadva 509ms 103408 KiB
36 Elfogadva 266ms 44640 KiB
37 Elfogadva 513ms 100872 KiB
38 Elfogadva 465ms 97292 KiB
39 Elfogadva 4ms 5816 KiB
subtask5 22/22
40 Elfogadva 233ms 30824 KiB
41 Elfogadva 4ms 6116 KiB
42 Elfogadva 50ms 12308 KiB
43 Elfogadva 194ms 25916 KiB
44 Elfogadva 416ms 61652 KiB
45 Elfogadva 435ms 61548 KiB
46 Elfogadva 4ms 6008 KiB
47 Elfogadva 3ms 5768 KiB
48 Elfogadva 35ms 10056 KiB
49 Elfogadva 180ms 23912 KiB
50 Elfogadva 194ms 25732 KiB
51 Elfogadva 201ms 25556 KiB
52 Elfogadva 442ms 62136 KiB
53 Elfogadva 3ms 6104 KiB
subtask6 0/17
54 Elfogadva 497ms 85872 KiB
55 Elfogadva 699ms 151836 KiB
56 Elfogadva 222ms 28072 KiB
57 Elfogadva 209ms 26160 KiB
58 Elfogadva 212ms 26052 KiB
59 Elfogadva 465ms 61720 KiB
60 Hibás válasz 697ms 152084 KiB
61 Elfogadva 223ms 28132 KiB
62 Elfogadva 208ms 26216 KiB
63 Elfogadva 211ms 25904 KiB
64 Elfogadva 442ms 60516 KiB
65 Elfogadva 449ms 62072 KiB
66 Elfogadva 379ms 65452 KiB