Submission #1246114

#TimeUsernameProblemLanguageResultExecution timeMemory
1246114KALARRYHack (APIO25_hack)C++20
0 / 100
25 ms9960 KiB
//chockolateman #include<bits/stdc++.h> #include "hack.h" using namespace std; const int S = 32000; vector<int> nums; bool done[1000005]; long long memo[1000005]; long long query_pair(long long x) { if(done[x]) return memo[x]; done[x] = true; vector<long long> temp; temp.push_back(1); temp.push_back(1+x); memo[x] = collisions(temp); return memo[x]; } long long query(long long l,long long r) { vector<long long> temp; for(int i = l ; i <= r ; i++) temp.push_back(nums[i]); long long res = collisions(temp); return res; } int hack(){ memset(done,false,sizeof(done)); memset(memo,0ll,sizeof(memo)); if(nums.empty()) { nums.push_back(0); //make it 1-indexed for(int i = 1 ; i < S ; i++) nums.push_back(nums.back() + 1); for(int i = 1 ; i <= S ; i++) nums.push_back(nums.back() + S); } int l = 1; int r = S; while(l < r) { int mid = (l+r+1)/2; if(query(1,mid)) r = mid-1; else l = mid; } int r_num = r+1; l = 1; r = r_num; while(l < r) { int mid = (l+r+1)/2; if(query(mid,r_num)) l = mid; else r = mid-1; } int n = nums[r_num] - nums[l]; vector<long long> temp; for(int x = 1 ; x <= n ; x++) if(n%x==0) { temp.clear(); temp.push_back(1); temp.push_back(1 + x); if(query_pair(x)) n = x; } 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...