Submission #1204841

#TimeUsernameProblemLanguageResultExecution timeMemory
1204841model_codeHack (APIO25_hack)C++20
66.40 / 100
123 ms4560 KiB
// 220k.cpp #include "hack.h" #include <bits/stdc++.h> using namespace std; map<vector<long long>, long long> memo; long long ask(vector<long long> x){ sort(x.begin(), x.end()); if (memo.find(x) != memo.end()){ return memo[x]; } return memo[x] = collisions(x); } vector<long long> merge(vector<long long> vl, vector<long long> vr){ vector<long long> res = vl; res.insert(res.end(), vr.begin(), vr.end()); return res; } long long solve(vector<long long> A, vector<long long> B){ int szA = (int) A.size(), szB = (int) B.size(); if (szA == 1 && szB == 1) return llabs(A[0] - B[0]); if (szA < szB){ swap(A, B); swap(szA, szB); } vector<long long> L(A.begin(), A.begin() + szA / 2); vector<long long> R(A.begin() + szA / 2, A.end()); long long cnt = ask(merge(L, B)); cnt -= ask(L); cnt -= ask(B); if (cnt > 0){ return solve(L, B); } else { return solve(R, B); } } int hack(){ int L = 22370; memo.clear(); vector<long long> A; for (int i = 1; i <= L; i++){ A.push_back(i); } vector<long long> B; for (int i = 1; i <= L; i++){ int mid = (int)5e8; B.push_back(mid + i * L); } long long n = solve(A, B); long long m = n; vector<pair<long long, int>> primes; for (long long p = 2; p * p <= m; p++){ int q = 0; while (m % p == 0){ m /= p; q++; } if (q) primes.emplace_back(p, q); } if (m != 1){ primes.emplace_back(m, 1); } for (auto [p, q] : primes){ while (q--){ if (ask({1, n / p + 1}) == 0) break; n /= p; } } return n; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...