Submission #228478

#TimeUsernameProblemLanguageResultExecution timeMemory
228478grtLutrija (COCI19_lutrija)C++17
70 / 70
335 ms432 KiB
#include <bits/stdc++.h>
#define PB push_back
#define ST first
#define ND second
#define _ ios_base::sync_with_stdio(0); cin.tie(0);
//mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());

using namespace std;

using ll = long long;
using pi = pair<int,int>;
using vi = vector<int>;

ll a,b;
bool swapped;

bool is_prime(ll x) {
	if(x == 0) return 0;
	for(ll i = 2; i * i <= x; ++i) {
		if(x % i == 0) return 0;
	}
	return 1;
}

int main() {_
	cin >> a >> b;
	if(a > b) {
		swap(a,b);
		swapped = 1;
	}
	bool ok = 0;
	for(ll i = a; i <= b; i+=2) {
		if(!is_prime(i)) {
			break;
		}
		if(i == b) ok = 1;
	}
	vector<ll>ans = {};
	if(ok) {
		for(ll i = a; i <= b; i+=2) {
			ans.PB(i);
		}
	} else {
		ans.PB(a);
		bool jump = (a == 2);
		if(!jump && is_prime(a-2)) {
			jump = 1;
			ans.PB(2);
		} else if(is_prime(a+2)) {
			jump = 1;
			ans.PB(a+2);
			ans.PB(2);
		}
		if(!jump) {
			cout << "-1";
			return 0;
		}
		jump = 0;
		if(is_prime(b - 2)) {
			ans.PB(b);
			jump = 1;
		} else if(is_prime(b+2)) {
			ans.PB(b+2);
			ans.PB(b);
			jump = 1;
		}
		if(!jump) {
			cout << "-1";
			return 0;
		}
	}
	cout << (int)ans.size() << "\n";
	if(swapped) reverse(ans.begin(),ans.end());
	for(auto x : ans) {
		cout << x << " ";
	}
}
#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...