69242023-12-19 22:31:31111Pac-Mancpp17Hibás válasz 0/1001.657s155392 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define double long double

#define pii pair<int, int>

void bad() {
	cout << "NO" << '\n';
	exit(0);
}

signed main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
#ifdef CB
	freopen("in.txt", "r", stdin);
//	freopen("out.txt", "w", stdout);
#endif
	int N;
	cin >> N;
	vector<int> X(N), Y(N), Z(N);
	for (int i = 0; i < N; i++) {
		cin >> X[i];
	}
	for (int i = 0; i < N; i++) {
		cin >> Y[i];
	}
	for (int i = 0; i < N; i++) {
		cin >> Z[i];
	}
	set<tuple<int, int, int>> s;
	for (int i = 0; i < N; i++) {
		s.insert({X[i], Y[i], Z[i]});
	}
	map<pii, vector<int>> xy, yz, zx;
	for (int i = 0; i < N; i++) {
		xy[{X[i], Y[i]}].push_back(Z[i]);
		yz[{Y[i], Z[i]}].push_back(X[i]);
		zx[{Z[i], X[i]}].push_back(Y[i]);
	}
	for (auto& [p, v] : xy) {
		sort(v.begin(), v.end());
	}
	for (auto& [p, v] : yz) {
		sort(v.begin(), v.end());
	}
	for (auto& [p, v] : zx) {
		sort(v.begin(), v.end());
	}
	// same line
	for (int i = 0; i < N; i++) {
		vector<pair<vector<int>&, int>> a = {
			{xy[{X[i], Y[i]}], Z[i]},
			{yz[{Y[i], Z[i]}], X[i]},
			{zx[{Z[i], X[i]}], Y[i]},
		};
		for (auto [v, x] : a) {
			auto t = lower_bound(v.begin(), v.end(), x);
			if (t != v.begin()) {
				if (*prev(t) != *t - 1) {
					bad();
				}
			}
			if (next(t) != v.end()) {
				if (*next(t) != *t + 1) {
					bad();
				}
			}
		}
	}
	// same plane
	map<int, map<int, pii>> xp, yp, zp;
	for (int i = 0; i < N; i++) {
		xp[X[i]][Y[i]];
		yp[Y[i]][Z[i]];
		zp[Z[i]][X[i]];
	}
	for (auto& [x, m] : xp) {
		pii a = {INT_MAX, INT_MIN};
		for (auto t = m.begin(); t != m.end(); t++) {
			t->second = a;
			a.first = min(a.first, xy[{x, t->first}].front());
			a.second = max(a.second, xy[{x, t->first}].back());
		}
	}
	for (auto& [y, m] : yp) {
		pii a = {INT_MAX, INT_MIN};
		for (auto t = m.begin(); t != m.end(); t++) {
			t->second = a;
			a.first = min(a.first, yz[{y, t->first}].front());
			a.second = max(a.second, yz[{y, t->first}].back());
		}
	}
	for (auto& [z, m] : zp) {
		pii a = {INT_MAX, INT_MIN};
		for (auto t = m.begin(); t != m.end(); t++) {
			t->second = a;
			a.first = min(a.first, zx[{z, t->first}].front());
			a.second = max(a.second, zx[{z, t->first}].back());
		}
	}
	map<int, map<int, pii>> xs, ys, zs;
	for (int i = 0; i < N; i++) {
		xs[X[i]][Y[i]];
		ys[Y[i]][Z[i]];
		zs[Z[i]][X[i]];
	}
	for (auto& [x, m] : xs) {
		pii a = {INT_MAX, INT_MIN};
		for (auto t = m.rbegin(); t != m.rend(); t++) {
			t->second = a;
			a.first = min(a.first, xy[{x, t->first}].front());
			a.second = max(a.second, xy[{x, t->first}].back());
		}
	}
	for (auto& [y, m] : ys) {
		pii a = {INT_MAX, INT_MIN};
		for (auto t = m.rbegin(); t != m.rend(); t++) {
			t->second = a;
			a.first = min(a.first, yz[{y, t->first}].front());
			a.second = max(a.second, yz[{y, t->first}].back());
		}
	}
	for (auto& [z, m] : zs) {
		pii a = {INT_MAX, INT_MIN};
		for (auto t = m.rbegin(); t != m.rend(); t++) {
			t->second = a;
			a.first = min(a.first, zx[{z, t->first}].front());
			a.second = max(a.second, zx[{z, t->first}].back());
		}
	}
	for (int i = 0; i < N; i++) {
		if (xp[X[i]][Y[i]].first < Z[i]) {
			if (!s.count({X[i], Y[i] - 1, Z[i]}) && !s.count({X[i], Y[i], Z[i] - 1})) {
				bad();
			}
		}
		if (xs[X[i]][Y[i]].second > Z[i]) {
			if (!s.count({X[i], Y[i] + 1, Z[i]}) && !s.count({X[i], Y[i], Z[i] + 1})) {
				bad();
			}
		}
		if (yp[Y[i]][Z[i]].first < X[i]) {
			if (!s.count({X[i] - 1, Y[i], Z[i]}) && !s.count({X[i], Y[i], Z[i] - 1})) {
				bad();
			}
		}
		if (ys[Y[i]][Z[i]].second > X[i]) {
			if (!s.count({X[i] + 1, Y[i], Z[i]}) && !s.count({X[i], Y[i], Z[i] + 1})) {
				bad();
			}
		}
		if (zp[Z[i]][X[i]].first < Y[i]) {
			if (!s.count({X[i] - 1, Y[i], Z[i]}) && !s.count({X[i], Y[i] - 1, Z[i]})) {
				bad();
			}
		}
		if (zs[Z[i]][X[i]].second > Y[i]) {
			if (!s.count({X[i] + 1, Y[i], Z[i]}) && !s.count({X[i], Y[i] + 1, Z[i]})) {
				bad();
			}
		}
	}
	cout << "YES" << '\n';
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms2104 KiB
2Elfogadva3ms2260 KiB
3Hibás válasz3ms2704 KiB
subtask20/18
4Elfogadva3ms2560 KiB
5Elfogadva3ms2868 KiB
6Elfogadva3ms2860 KiB
7Elfogadva3ms3104 KiB
8Elfogadva3ms2972 KiB
9Elfogadva3ms3008 KiB
10Elfogadva3ms3232 KiB
11Elfogadva3ms3412 KiB
12Hibás válasz3ms3232 KiB
13Elfogadva3ms3224 KiB
subtask30/19
14Elfogadva14ms7888 KiB
15Elfogadva4ms3584 KiB
16Elfogadva9ms5480 KiB
17Elfogadva10ms5712 KiB
18Elfogadva34ms5832 KiB
19Elfogadva32ms5784 KiB
20Hibás válasz3ms3876 KiB
21Elfogadva7ms4832 KiB
22Elfogadva12ms5824 KiB
23Elfogadva10ms6120 KiB
24Elfogadva10ms5864 KiB
25Hibás válasz32ms6144 KiB
26Elfogadva3ms3784 KiB
subtask40/24
27Elfogadva188ms47192 KiB
28Elfogadva14ms6780 KiB
29Elfogadva771ms73324 KiB
30Elfogadva741ms73196 KiB
31Elfogadva740ms72932 KiB
32Elfogadva727ms73372 KiB
33Elfogadva4ms5036 KiB
34Elfogadva228ms48084 KiB
35Elfogadva804ms73060 KiB
36Elfogadva195ms48040 KiB
37Elfogadva731ms73076 KiB
38Hibás válasz736ms73348 KiB
39Elfogadva4ms4624 KiB
subtask50/22
40Elfogadva177ms35760 KiB
41Elfogadva4ms4436 KiB
42Elfogadva41ms12936 KiB
43Elfogadva143ms30668 KiB
44Elfogadva680ms31444 KiB
45Elfogadva676ms31304 KiB
46Hibás válasz3ms4508 KiB
47Elfogadva3ms4300 KiB
48Elfogadva27ms10140 KiB
49Elfogadva129ms28144 KiB
50Elfogadva143ms30964 KiB
51Elfogadva158ms31104 KiB
52Hibás válasz686ms31736 KiB
53Elfogadva3ms4516 KiB
subtask60/17
54Elfogadva442ms87572 KiB
55Elfogadva1.657s155392 KiB
56Elfogadva168ms33220 KiB
57Elfogadva155ms31416 KiB
58Elfogadva151ms32024 KiB
59Elfogadva694ms31736 KiB
60Elfogadva935ms155376 KiB
61Elfogadva173ms33720 KiB
62Elfogadva158ms31660 KiB
63Elfogadva156ms31532 KiB
64Elfogadva675ms31740 KiB
65Hibás válasz688ms31884 KiB
66Elfogadva217ms67428 KiB