#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) {
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 | 2048 KiB | ||||
2 | Elfogadva | 3ms | 2272 KiB | ||||
3 | Elfogadva | 3ms | 2604 KiB | ||||
subtask2 | 18/18 | ||||||
4 | Elfogadva | 3ms | 2704 KiB | ||||
5 | Elfogadva | 3ms | 3228 KiB | ||||
6 | Elfogadva | 3ms | 3172 KiB | ||||
7 | Elfogadva | 3ms | 3080 KiB | ||||
8 | Elfogadva | 3ms | 3032 KiB | ||||
9 | Elfogadva | 3ms | 3500 KiB | ||||
10 | Elfogadva | 3ms | 3492 KiB | ||||
11 | Elfogadva | 3ms | 3676 KiB | ||||
12 | Elfogadva | 3ms | 3716 KiB | ||||
13 | Elfogadva | 3ms | 4344 KiB | ||||
subtask3 | 19/19 | ||||||
14 | Elfogadva | 4ms | 5688 KiB | ||||
15 | Elfogadva | 4ms | 4360 KiB | ||||
16 | Elfogadva | 25ms | 4328 KiB | ||||
17 | Elfogadva | 10ms | 4460 KiB | ||||
18 | Elfogadva | 2.026s | 4676 KiB | ||||
19 | Elfogadva | 1.909s | 4496 KiB | ||||
20 | Elfogadva | 3ms | 5136 KiB | ||||
21 | Elfogadva | 32ms | 5248 KiB | ||||
22 | Elfogadva | 624ms | 5480 KiB | ||||
23 | Elfogadva | 21ms | 5564 KiB | ||||
24 | Elfogadva | 270ms | 5204 KiB | ||||
25 | Elfogadva | 32ms | 5476 KiB | ||||
26 | Elfogadva | 3ms | 5584 KiB | ||||
subtask4 | 24/24 | ||||||
27 | Elfogadva | 268ms | 43976 KiB | ||||
28 | Elfogadva | 9ms | 7612 KiB | ||||
29 | Elfogadva | 512ms | 104272 KiB | ||||
30 | Elfogadva | 513ms | 105908 KiB | ||||
31 | Elfogadva | 513ms | 101452 KiB | ||||
32 | Elfogadva | 509ms | 105348 KiB | ||||
33 | Elfogadva | 4ms | 5996 KiB | ||||
34 | Elfogadva | 246ms | 44536 KiB | ||||
35 | Elfogadva | 519ms | 103256 KiB | ||||
36 | Elfogadva | 273ms | 44360 KiB | ||||
37 | Elfogadva | 501ms | 100756 KiB | ||||
38 | Elfogadva | 508ms | 97052 KiB | ||||
39 | Elfogadva | 4ms | 5720 KiB | ||||
subtask5 | 22/22 | ||||||
40 | Elfogadva | 240ms | 30596 KiB | ||||
41 | Elfogadva | 4ms | 5788 KiB | ||||
42 | Elfogadva | 52ms | 11936 KiB | ||||
43 | Elfogadva | 197ms | 25684 KiB | ||||
44 | Elfogadva | 437ms | 61408 KiB | ||||
45 | Elfogadva | 444ms | 61408 KiB | ||||
46 | Elfogadva | 3ms | 5908 KiB | ||||
47 | Elfogadva | 3ms | 5552 KiB | ||||
48 | Elfogadva | 34ms | 9692 KiB | ||||
49 | Elfogadva | 180ms | 23668 KiB | ||||
50 | Elfogadva | 193ms | 25572 KiB | ||||
51 | Elfogadva | 201ms | 25308 KiB | ||||
52 | Elfogadva | 460ms | 61820 KiB | ||||
53 | Elfogadva | 3ms | 5948 KiB | ||||
subtask6 | 0/17 | ||||||
54 | Elfogadva | 504ms | 85692 KiB | ||||
55 | Elfogadva | 703ms | 151708 KiB | ||||
56 | Elfogadva | 225ms | 27904 KiB | ||||
57 | Elfogadva | 210ms | 25860 KiB | ||||
58 | Elfogadva | 210ms | 25828 KiB | ||||
59 | Elfogadva | 451ms | 61500 KiB | ||||
60 | Hibás válasz | 741ms | 152080 KiB | ||||
61 | Elfogadva | 229ms | 27836 KiB | ||||
62 | Elfogadva | 210ms | 25968 KiB | ||||
63 | Elfogadva | 209ms | 25680 KiB | ||||
64 | Elfogadva | 453ms | 60396 KiB | ||||
65 | Elfogadva | 451ms | 61832 KiB | ||||
66 | Elfogadva | 386ms | 65068 KiB |