Submission #1285815

#TimeUsernameProblemLanguageResultExecution timeMemory
1285815SmuggingSpunHack (APIO25_hack)C++20
100 / 100
82 ms964 KiB
#include "hack.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int LIM = 1e9;
bool in_range(int l, int r){
	int sqr = sqrt(r - l + 1);
	vector<ll>p;
	for(int i = 1; i <= sqr; i++){
		p.push_back(i);
	}
	for(int i = l + sqr; i <= r; i += sqr){
		p.push_back(i);
	}
	p.push_back(r + 1);
	return collisions(p) > 0;
}
int hack(){
	int low = LIM >> 1, high = LIM, ans;
	while(low <= high){
		int mid = (low + high) >> 1;
		if(in_range(low, mid)){
			high = (ans = mid) - 1;
		}
		else{
			low = mid + 1;
		}
	}
	vector<int>fact;
	int N = ans;
	for(int i = 2; i * i <= N; i++){
		if(N % i == 0){
			N /= i;
			fact.push_back(i);
			while(N % i == 0){
				N /= i;
			}
		}
	}
	if(N > 1){
		fact.push_back(N);
	}
	for(int& i : fact){
		while(ans % i == 0 && collisions({1, ans / i + 1}) > 0){
			ans /= i;
		}
	}
	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...