#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+5;
pair<long long,long long> P[MAXN];
long long X[MAXN],Y[MAXN];
vector<int> vi[MAXN*20],vv[MAXN*20];
bool comp(pair<long long,long long> a,pair<long long,long long> b) { return (a.second==0)>(b.second==0); }
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
int Rand(int l,int r) { return uniform_int_distribution<int>(l,r)(rng); }
long long f(int i,int j) { return (P[i].first*P[j].second-P[i].second*P[j].first); }
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
long long n,g=0,h=0;
cin>>n;
if(n<=2) return cout<<-1,0;
for(int i=1;i<=n;i++) cin>>P[i].first>>P[i].second;
sort(P+1,P+n+1);
for(int i=1;i<n;i++) P[i].first-=P[i+1].first,P[i].second-=P[i+1].second,g=__gcd(g,P[i].second),P[i].second=abs(P[i].second);
sort(P+1,P+n,comp);
int l=1;
for(int i=1;i<n;i++) if(P[i].second==0) h=__gcd(h,P[i].first),l++;
for(int i=1;i<=2e6;i++) for(int j=i;j<=2e6;j+=i) vi[j].push_back(i);
for(int i=1;i<n;i++) if(P[i].second) for(auto v:vi[P[i].second]) vv[v].push_back(i);
for(int i=1;i<=2e6;i++) for(int j=1;j<vv[i].size();j++) h=__gcd(h,f(vv[i][j-1],vv[i][j])/i);
if(!g||!h) return cout<<-1,0;
cout<<abs(g*h);
}
# | 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... |