55712023-07-30 18:34:26111Hanoi tornyai variáns (45)cpp14Futási hiba 0/45138ms6652 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define double long double

#define pii pair<int, int>

array<vector<int>, 3> v, b;
vector<int> p(20), q(20);
vector<pii> r;

void solve(int n, int i = -1, bool z = true) {
	if (n == 0) {
		return;
	}
	if (z) {
		i = q[n];
	}
	//cout << "task: move " << n << " to " << i+1 << endl;
	if (p[n] == i) {
		solve(n - 1, i, z);
		return;
	}
	for (int j = 0; j < 3; j++) {
		if (p[n] != j && i != j) {
			solve(n - 1, j, false);
			break;
		}
	}
	r.emplace_back(p[n], i);
	p[n] = i;
	solve(n - 1, i, z);
}

signed main() {
#ifdef CB
	ifstream fin("be1.txt");
	cin.rdbuf(fin.rdbuf());
#endif
	int N = 0;
	for (int i = 0; i < 3; i++) {
		while (true) {
			int x;
			cin >> x;
			if (x == 0) {
				break;
			}
			v[i].push_back(x);
			p[x] = i;
			N++;
		}
	}
	for (int i = 0; i < 3; i++) {
		while (true) {
			int x;
			cin >> x;
			if (x == 0) {
				break;
			}
			b[i].push_back(x);
			q[x] = i;
		}
	}
	if (N == 5)exit(1);
	solve(N);
	cout << r.size() << endl;
	for (int i = 0; i < r.size(); i++) {
		cout << r[i].first + 1 << " " << r[i].second + 1 << endl;
	}
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/45
1Futási hiba0/03ms2148 KiB
2Hibás válasz0/03ms2396 KiB
3Hibás válasz0/23ms2600 KiB
4Futási hiba0/23ms2700 KiB
5Hibás válasz0/22ms2792 KiB
6Hibás válasz0/33ms2844 KiB
7Hibás válasz0/23ms3056 KiB
8Hibás válasz0/23ms3296 KiB
9Hibás válasz0/24ms3424 KiB
10Hibás válasz0/23ms3612 KiB
11Hibás válasz0/23ms3720 KiB
12Hibás válasz0/23ms3724 KiB
13Hibás válasz0/28ms4064 KiB
14Hibás válasz0/218ms4180 KiB
15Hibás válasz0/259ms5016 KiB
16Hibás válasz0/250ms6040 KiB
17Hibás válasz0/248ms6268 KiB
18Hibás válasz0/279ms6432 KiB
19Hibás válasz0/389ms6528 KiB
20Hibás válasz0/3138ms6524 KiB
21Hibás válasz0/382ms6652 KiB
22Hibás válasz0/394ms6620 KiB