#pragma GCC optimize("Ofast","unroll-loops")
#include <bits/stdc++.h>
using namespace std;
#define int long long
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int N;
cin >> N;
vector<pair<int,int>> portals(N);
for(auto&[i,j]:portals)cin>>i>>j;
vector<pair<int,int>> constrains(N);
for(auto&[x1,y1]:portals){
constrains.emplace_back(abs(portals[0].first-x1),abs(portals[0].second-y1));
}
auto tryFirst = [&](){
int vertical = 0;
int horizontal = 0;
for(auto&[i,j]:constrains)vertical=gcd(vertical,i);
for(auto&[i,j]:constrains)horizontal=gcd(horizontal,j);
if(vertical==0 or horizontal==0)return true;
for(auto&[i,j]:constrains){
if(i/vertical!=j/horizontal)return false;
}
return true;
};
if(tryFirst()){
cout << "-1\n";
return 0;
}
auto tryShift = [&](){
int b = 0;
for(auto&[i,j]:constrains)b=gcd(b,j);
int maxC = 0;
for(int a=-2e6;a<=2e6;a++){
int currC = 0;
for(auto&[i,j]:constrains){
currC = gcd(currC,i-(j/b)*a);
}
maxC = max(maxC,currC);
}
return b*maxC;
};
int ans = tryShift();
for(auto&[i,j]:constrains)swap(i,j);
ans = max(ans,tryShift());
cout << ans << '\n';
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |