Submission #1268679

#TimeUsernameProblemLanguageResultExecution timeMemory
1268679SmuggingSpunLutrija (COCI19_lutrija)C++20
70 / 70
51 ms328 KiB
#include<bits/stdc++.h>
#define taskname "B"
using namespace std;
typedef long long ll;
bool is_prime(ll n){
	if(n == 2 || n == 3){
		return true;
	}
	if(n < 2 || (~n & 1LL) || n % 3 == 0){
		return false;
	}
	for(ll k = 5; k * k <= n; k += 6){
		if(n % k == 0 || n % (k + 2) == 0){
			return false;
		}
	}
	return true;
}
bitset<20>vis;
vector<int>path;
vector<ll>pr(1, 2);
ll a, b;
void dfs(int s){
	vis[s] = true;
 	path.emplace_back(s);
	if(pr[s] == b){
		cout << path.size() << "\n";
		for(int& x : path){
			cout << pr[x] << " ";
		}
		exit(0);
	}
	for(int i = 0; i < pr.size(); i++){
		if(!vis[i] && is_prime(abs(pr[i] - pr[s]))){
			dfs(i);
		}
	}
	path.pop_back();
}
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	if(fopen(taskname".inp", "r")){
		freopen(taskname".inp", "r", stdin);
	}
	cin >> a >> b;
	for(int i = -2; i < 3; i++){
		if(is_prime(a + i)){
			pr.emplace_back(a + i);
		}
		if(is_prime(b + i)){
			pr.emplace_back(b + i);
		}
	}
	sort(pr.begin(), pr.end());
	pr.resize(unique(pr.begin(), pr.end()) - pr.begin());
	vis.reset();
	for(int i = 0; i < pr.size(); i++){
		if(pr[i] == a){
			dfs(i);
		}
	}
	cout << -1;
}

Compilation message (stderr)

lutrija.cpp: In function 'int main()':
lutrija.cpp:43:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   43 |                 freopen(taskname".inp", "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...