Submission #1208665

#TimeUsernameProblemLanguageResultExecution timeMemory
1208665k1r1t0Hack (APIO25_hack)C++20
100 / 100
95 ms1184 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; ll collisions(vector<ll> x); const int T = 500; int hack() { vector<ll> group; for (int i = 1; i <= T; i++) group.push_back(i); for (int i = 1; i <= T; i++) group.push_back(T + T * i); if (collisions(group)) { int l = 1, r = (int)(1e6); while (l < r) { int mid = (l + r) / 2; int S = sqrt(mid - l + 1); vector<ll> pts; for (int i = 1; i <= S; i++) pts.push_back(i); for (int i = mid + 1; i > max(l, S); i -= S) pts.push_back(i); if (collisions(pts)) r = mid; else l = mid + 1; } return l; } int l = (int)(4.95e8), r = (int)(1e9); while (l < r) { int mid = (l + r) / 2; int S = sqrt(mid - l + 1); vector<ll> pts; for (int i = 1; i <= S; i++) pts.push_back(i); for (int i = mid + 1; i > max(l, S); i -= S) pts.push_back(i); if (collisions(pts)) r = mid; else l = mid + 1; } vector<int> ff; int t = l; for (int d = 2; d * d <= t; d++) while (t % d == 0) { ff.push_back(d); t /= d; } if (t > 1) ff.push_back(t); int ans = l; if (!ff.empty()) { for (int x : ff) if (collisions({1, 1 + ans / x})) ans /= x; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...