Submission #1216317

#TimeUsernameProblemLanguageResultExecution timeMemory
1216317anfiHack (APIO25_hack)C++20
0 / 100
32 ms960 KiB
#include "hack.h" #include <bits/stdc++.h> using namespace std; #define int long long const long long INF = 1e9; int ans(int l, int r) { // Binary search untuk menemukan nilai minimum yang memicu collision while (l < r) { int m = (l + r) >> 1; int c = sqrtl(m - l + 1); vector<int> q; // Tambahkan titik awal for (int i = 1; i <= c; ++i) { q.push_back(i); } // Tambahkan sampel dari l + c hingga m dengan step c for (int x = l + c; x <= m; x += c) { q.push_back(x); } // Pastikan m+1 dicoba jika relevan if (m + 1 > c) { q.push_back(m + 1); } // Cek collision if (collisions(q)) { r = m; } else { l = m + 1; } } // Persiapan sieve hingga sqrt(l) untuk mendapatkan daftar prima int limit = sqrtl(l); vector<bool> is_prime(limit + 1, true); is_prime[0] = is_prime[1] = false; vector<int> primes; for (int i = 2; i <= limit; ++i) { if (is_prime[i]) { primes.push_back(i); if ((long long)i * i <= limit) { for (int j = i * i; j <= limit; j += i) { is_prime[j] = false; } } } } // Memurnikan hasil dengan membagi faktor prima selama memenuhi collision int prev = -1; while (l != prev) { prev = l; for (int p : primes) { if (l % p == 0) { 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...