55692023-07-30 18:30:05111Hanoi tornyai variáns (45)cpp14Hibás válasz 0/45136ms6420 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;
		}
	}
	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
1Hibás válasz0/03ms2024 KiB
2Hibás válasz0/03ms2264 KiB
3Hibás válasz0/23ms2384 KiB
4Hibás válasz0/23ms2636 KiB
5Hibás válasz0/23ms2848 KiB
6Hibás válasz0/33ms2940 KiB
7Hibás válasz0/23ms3072 KiB
8Hibás válasz0/23ms3168 KiB
9Hibás válasz0/24ms3056 KiB
10Hibás válasz0/23ms3276 KiB
11Hibás válasz0/24ms3508 KiB
12Hibás válasz0/24ms3728 KiB
13Hibás válasz0/26ms3764 KiB
14Hibás válasz0/29ms3952 KiB
15Hibás válasz0/235ms4912 KiB
16Hibás válasz0/250ms5900 KiB
17Hibás válasz0/282ms5908 KiB
18Hibás válasz0/279ms5908 KiB
19Hibás válasz0/389ms5908 KiB
20Hibás válasz0/3101ms6188 KiB
21Hibás válasz0/3136ms6204 KiB
22Hibás válasz0/361ms6420 KiB