Submission #1264152

#TimeUsernameProblemLanguageResultExecution timeMemory
1264152goulthenLutrija (COCI19_lutrija)C++20
70 / 70
57 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define rep(i,a,b) for (int i = a; i <= b; ++i)
#define pb push_back

const int MAXN = 1e5 + 10;
map<int, vector<int>> g;
map<int, bool> mk;

bool prime(int x) {
	if (x%2 == 0 && x!=2) return 0;
	for (int i = 3; i*i <= x; i++) if (x%i==0) return 0;
	return 1;
}

void dfs(int u, vector<int> &ans, int tg) {
	mk[u] = 1;
	ans.pb(u);
	if (u==tg) return;
	for (int &v : g[u]) {
		if (mk[v]) continue;
		dfs(v,ans,tg);
	}
	if (ans.back() == tg) return;
	ans.pop_back();
}

int32_t main() {
	ios_base::sync_with_stdio(0);cin.tie(nullptr);
	int a,b;cin >> a >> b;

	if (prime(a+2)) {
		g[a].pb(a+2), g[a+2].pb(a);
		g[a+2].pb(2), g[2].pb(a+2);
	}

	if (prime(a-2)) {
		g[a].pb(a-2), g[a-2].pb(a);
		g[a].pb(2), g[2].pb(a);
	}

	if (prime(b+2)) {
		g[b].pb(b+2), g[b+2].pb(b);
		g[b+2].pb(2), g[2].pb(b+2);
	}

	if (prime(b-2)) {
		g[b].pb(b-2), g[b-2].pb(b);
		g[b].pb(2), g[2].pb(b);
	}


	vector<int> ans;
	dfs(a,ans, b);
	if (ans.back() != b) {
		cout << "-1\n";
		return 0;
	}
	cout << ans.size() << '\n';
	for (int &v : ans) cout << v << ' ';
	cout << '\n';

	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...