#include<bits/stdc++.h>
using namespace std;
#define ii pair<__int128,__int128>
#define fi first
#define se second
const int MAXN=1e5+5;
ii P[MAXN];
void update(ii& a,ii& b)
{
if(a.fi<b.fi) swap(a,b);
if(!b.fi)
{
swap(a,b);
return ;
}
while(a.fi)
{
if(a.fi<b.fi) swap(a,b);
__int128 k=a.fi/b.fi;
a.fi-=k*b.fi,a.se-=k*b.se;
}
}
__int128 f(int i,int j) { return P[i].fi*P[j].se-P[i].se*P[j].fi; }
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
long long n,ans=0;
cin>>n;
if(n<=2) return cout<<-1,0;
for(int i=1;i<=n;i++)
{
long long x,y;
cin>>x>>y;
P[i].fi=x,P[i].se=y;
}
for(int i=1;i<n;i++)
{
P[i].fi-=P[i+1].fi,P[i].se-=P[i+1].se;
if(P[i].fi<0) P[i].fi=-P[i].fi,P[i].se=-P[i].se;
}
for(int i=2;i<n;i++) update(P[i-1],P[i]);
for(int i=2;i<n-1;i++) P[i].se=__gcd(P[i].se,P[i-1].se);
ans=f(n-2,n-1);
if(!ans) return cout<<-1,0;
cout<<abs(ans);
}
# | 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... |