Submission #1204998

#TimeUsernameProblemLanguageResultExecution timeMemory
1204998Kel_MahmutHack (APIO25_hack)C++20
100 / 100
67 ms1588 KiB
#include "hack.h" #include <vector> #include <bits/stdc++.h> #define pb push_back #define endl ("\n") #define all(aa) aa.begin(), aa.end() typedef long long ll; using namespace std; const int N = 1e9; const int N2 = 5e8; const int k = 35000; const int b2 = N2 / k; const int b = N / k; int hack(){ vector<vector<int>> s(2); for(int i = 1; i <= k; i++) s[0].pb(i + 1); for(int i = b2; i <= b + 1; i++) s[1].pb(i * k); function<int(vector<int>&, vector<int>&)> query = [&](vector<int>& s1, vector<int>& s2){ vector<ll> cur; for(int i : s1) cur.pb(i); for(int i : s2) cur.pb(i); ll ret = collisions(cur); return ret > 0; }; while(s[0].size() > 1 || s[1].size() > 1){ if(s[0].size() > s[1].size()){ vector<int> sl, sr; for(int i = 0; i < (int) s[0].size() / 2; i++){ sl.pb(s[0][i]); } for(int i = (int) s[0].size() / 2; i < (int) s[0].size(); i++){ sr.pb(s[0][i]); } if(query(sr, s[1])){ s[0] = sr; } else{ s[0] = sl; } } else{ vector<int> sl, sr; for(int i = 0; i < (int) s[1].size() / 2; i++){ sl.pb(s[1][i]); } for(int i = (int) s[1].size() / 2; i < (int) s[1].size(); i++){ sr.pb(s[1][i]); } if(query(sl, s[0])){ s[1] = sl; } else{ s[1] = sr; } } } int ans = s[1][0] - s[0][0]; int res = ans; for(int i = 2; i * i <= ans; i++){ while(ans % i == 0){ if(collisions({1ll, res / i + 1})){ ans /= i; res /= i; } else break; } while(ans % i == 0){ ans /= i; } } if(ans > 1 && collisions({1ll, (ll) res / ans + 1})) res /= ans; return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...