6671 2023. 12. 15 18:50:17 szil Pac-Man cpp17 Hibás válasz 83/100 1.902s 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 >= 550 && time_elapsed <= 650) {
		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 1916 KiB
2 Elfogadva 3ms 2364 KiB
3 Elfogadva 3ms 2576 KiB
subtask2 18/18
4 Elfogadva 3ms 2532 KiB
5 Elfogadva 3ms 3236 KiB
6 Elfogadva 3ms 3188 KiB
7 Elfogadva 3ms 3208 KiB
8 Elfogadva 3ms 3036 KiB
9 Elfogadva 3ms 3716 KiB
10 Elfogadva 3ms 3484 KiB
11 Elfogadva 3ms 3360 KiB
12 Elfogadva 3ms 3612 KiB
13 Elfogadva 3ms 4324 KiB
subtask3 19/19
14 Elfogadva 4ms 5816 KiB
15 Elfogadva 4ms 4420 KiB
16 Elfogadva 24ms 4512 KiB
17 Elfogadva 10ms 4720 KiB
18 Elfogadva 1.902s 4804 KiB
19 Elfogadva 1.792s 4832 KiB
20 Elfogadva 3ms 5328 KiB
21 Elfogadva 29ms 5188 KiB
22 Elfogadva 587ms 5284 KiB
23 Elfogadva 20ms 5452 KiB
24 Elfogadva 254ms 5568 KiB
25 Elfogadva 30ms 5452 KiB
26 Elfogadva 3ms 5764 KiB
subtask4 24/24
27 Elfogadva 279ms 44216 KiB
28 Elfogadva 9ms 7968 KiB
29 Elfogadva 505ms 104528 KiB
30 Elfogadva 469ms 106064 KiB
31 Elfogadva 509ms 101748 KiB
32 Elfogadva 513ms 105488 KiB
33 Elfogadva 4ms 6200 KiB
34 Elfogadva 282ms 44756 KiB
35 Elfogadva 528ms 103568 KiB
36 Elfogadva 270ms 44720 KiB
37 Elfogadva 508ms 100848 KiB
38 Elfogadva 508ms 97292 KiB
39 Elfogadva 4ms 5816 KiB
subtask5 22/22
40 Elfogadva 243ms 30796 KiB
41 Elfogadva 4ms 5988 KiB
42 Elfogadva 52ms 12180 KiB
43 Elfogadva 202ms 25832 KiB
44 Elfogadva 418ms 61596 KiB
45 Elfogadva 419ms 61544 KiB
46 Elfogadva 3ms 6012 KiB
47 Elfogadva 3ms 5848 KiB
48 Elfogadva 34ms 9988 KiB
49 Elfogadva 179ms 23940 KiB
50 Elfogadva 209ms 25804 KiB
51 Elfogadva 209ms 25488 KiB
52 Elfogadva 421ms 62120 KiB
53 Elfogadva 3ms 6104 KiB
subtask6 0/17
54 Elfogadva 513ms 85864 KiB
55 Hibás válasz 708ms 151896 KiB
56 Elfogadva 226ms 28124 KiB
57 Elfogadva 204ms 26100 KiB
58 Elfogadva 209ms 26080 KiB
59 Elfogadva 451ms 61728 KiB
60 Elfogadva 707ms 152084 KiB
61 Elfogadva 219ms 28132 KiB
62 Elfogadva 210ms 26248 KiB
63 Elfogadva 224ms 25844 KiB
64 Elfogadva 446ms 60512 KiB
65 Elfogadva 428ms 62068 KiB
66 Elfogadva 379ms 65304 KiB