Submission #1216324

#TimeUsernameProblemLanguageResultExecution timeMemory
1216324anfiHack (APIO25_hack)C++20
100 / 100
109 ms964 KiB
#include "hack.h" #include <bits/stdc++.h> using namespace std; #define int long long #define fi first #define se second const long long inf = 1e9; int ans(int l, int r) { while (l < r) { int m = (l + r) >> 1; int c = sqrtl(m - l + 1); vector<int> q; for (int i = 1; i <= c; ++i) q.push_back(i); for (int i = l + c; i <= m; i += c) q.push_back(i); if (m + 1 > c) q.push_back(m + 1); if (collisions(q)) { r = m; } else { l = m + 1; } } vector<int> divs; divs.push_back(l); for (int i = 2; i * i <= l; ++i) { if (l % i == 0) { divs.push_back(i); if (i * i != l) divs.push_back(l / i); } } sort(divs.begin(), divs.end()); vector<int> primes; for (int d : divs) { bool is_prime = true; for (int p : primes) { if (d % p == 0) { is_prime = false; break; } } if (is_prime) primes.push_back(d); } int prev_l = -1; while (l != prev_l) { prev_l = l; for (int p : primes) { if ((l / p) * p == l) { if (collisions({1, (l / p) + 1})) { l /= p; break; } } } } return l; } signed hack() { return ans(inf / 2, inf); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...