Submission #347188

#TimeUsernameProblemLanguageResultExecution timeMemory
347188NursikLutrija (COCI19_lutrija)C++14
63 / 70
683 ms492 KiB
#include <bits/stdc++.h> #define f first #define s second #define ll long long #define pb push_back #define all(v) v.begin(),v.end() #define ld long double using namespace std; void data() { #ifdef NURS freopen("main.in", "r", stdin); freopen("main.out", "w", stdout); #endif } void win() { ios_base::sync_with_stdio(0), cin.tie(0),cout.tie(0); } int block = 400; const ld eps = 1e-6; const int N = 1e6 + 500; const int mod = 1e9 + 7; const ll hh = 100010683; const ll hh2 = 150005819; ll a, b, pos, pos2; bool check(ll x) { for (int j = 2; j <= sqrt(x); j++) { if (x % j == 0) return 0; } return 1; } bool got, was[2000]; vector<int> g[2000]; int par[2000]; void dfs(int v) { // cout << v << '\n'; if (v == pos) got = 1; was[v] = 1; for (int i = 0; i < g[v].size(); i++) { int to = g[v][i]; if (was[to] == 0) { dfs(to), par[to] = v; } } } int main() { data(); win(); cin >> a >> b; vector<ll> v; map<ll, bool> was; for (ll i = a - 2; i <= a + 2; i++) { if (check(i) && was[i] == 0 && i > 1) v.pb(i), was[i] = 1; } for (ll i = b - 2; i <= b + 2; i++) { if (check(i) && was[i] == 0 && i > 1) v.pb(i), was[i] = 1;; } if (was[2] == 0) v.pb(2); sort(all(v)); pos = -1, pos2 = 1000;; for (int i = 0; i < v.size(); i++) { for (int j = 0; j < v.size(); j++) { ll k = abs(v[i] - v[j]); if (check(k)) g[i].pb(j); } } for (int i = 0; i < v.size(); i++) { if (v[i] == b) pos = i; if (v[i] == a) pos2 = i; } par[pos2] = -1; dfs(pos2); if (got) { vector<ll> ans; b = pos; while (par[b] != -1) { ans.pb(v[b]), b = par[b]; } ans.pb(v[b]); reverse(all(ans)); cout << ans.size() << '\n'; for (int i = 0; i < ans.size(); i++) { cout << ans[i] << " "; } return 0; } cout << -1; }

Compilation message (stderr)

lutrija.cpp: In function 'void dfs(int)':
lutrija.cpp:52:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   52 |  for (int i = 0; i < g[v].size(); i++)
      |                  ~~^~~~~~~~~~~~~
lutrija.cpp: In function 'int main()':
lutrija.cpp:82:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   82 |  for (int i = 0; i < v.size(); i++)
      |                  ~~^~~~~~~~~~
lutrija.cpp:84:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   84 |   for (int j = 0; j < v.size(); j++)
      |                   ~~^~~~~~~~~~
lutrija.cpp:91:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   91 |  for (int i = 0; i < v.size(); i++)
      |                  ~~^~~~~~~~~~
lutrija.cpp:111:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  111 |   for (int i = 0; i < ans.size(); i++)
      |                   ~~^~~~~~~~~~~~
#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...