Submission #645348

# Submission time Handle Problem Language Result Execution time Memory
645348 2022-09-26T20:31:18 Z Hacv16 Lutrija (COCI19_lutrija) C++17
70 / 70
591 ms 324 KB
#include<bits/stdc++.h>
#define pi 3.141592653589793238
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#define MOD 1000000007
#define INF 999999999999999999 
#define pb push_back
#define ff first
#define ss second
 
#define mt make_tuple
#define ll long long
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
 
using namespace __gnu_pbds;
 
 
typedef tree<ll, null_type, less_equal<ll>, rb_tree_tag, tree_order_statistics_node_update> indexed_set;
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
bool prime(ll n){
    if(n <= 1){
        return false;
    }
    for(ll i = 2; i * i <= n; i++){
        if(n % i == 0){
            return false;
        }
    }
    return true;
} 
int main() {
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    fast;
    ll T = 1, i, j;
    
    //cin >> T;
    while (T--) {
        ll l, r;
        cin >> l >> r;
        
        if(prime(r - l)){
            cout << "2\n";
            cout << l << " " << r << "\n";
            return 0;
        }
        
        vector<ll> x = {l, r};
        set<ll> s;
        for(auto u : x){
            for(i = -2; i <= 2; i += 2){
                if(prime(u + i)){
                    s.insert(u + i);
                }
            }
        }
        s.insert(2);
        map<ll,ll> visited;
        vector<ll> ans;
        function<void(ll)> dfs = [&](ll a){
            visited[a] = 1;
            ans.pb(a);
            if(a == r){
                cout << ans.size() << endl;
                for(auto u : ans){
                    cout << u << " ";
                }
                cout << endl;
                return;
            }
            for(auto u : s){
                if(prime(abs(u - a)) && !visited[u]){
                    dfs(u);
                }
            }
            ans.pop_back();
        };
        dfs(l);
        if(ans.empty()){
            cout << "-1\n";
        }
    }
    return 0;
}

Compilation message

lutrija.cpp:4: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    4 | #pragma GCC optimization ("O3")
      | 
lutrija.cpp:5: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    5 | #pragma GCC optimization ("unroll-loops")
      | 
lutrija.cpp: In function 'int main()':
lutrija.cpp:39:18: warning: unused variable 'j' [-Wunused-variable]
   39 |     ll T = 1, i, j;
      |                  ^
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 554 ms 296 KB Output is correct
2 Correct 200 ms 300 KB Output is correct
3 Correct 0 ms 324 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 529 ms 296 KB Output is correct
2 Correct 174 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 591 ms 296 KB Output is correct
2 Correct 223 ms 300 KB Output is correct
3 Correct 1 ms 320 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 433 ms 292 KB Output is correct
2 Correct 151 ms 300 KB Output is correct
3 Correct 1 ms 212 KB Output is correct