#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int nx=1e5+5;
ll n, x[nx], y[nx], gx, gy;
struct myvector
{
ll x, y;
myvector(ll x=0, ll y=0): x(x), y(y){}
} v[nx];
vector<myvector> bs;
ll cross(myvector a, myvector b)
{
return a.x*b.y-a.y*b.x;
}
int main()
{
cin.tie(NULL)->sync_with_stdio(false);
cin>>n;
for (int i=1; i<=n; i++) cin>>x[i]>>y[i];
for (int i=2; i<=n; i++) v[i-1]=myvector(x[i]-x[1], y[i]-y[1]);
for (int i=1; i<=n-1; i++)
{
int f=0;
for (int j=1; j<i; j++) if (cross(v[j], v[i])==0) f=1;
if (f) continue;
myvector cur;
for (int j=1; j<=i; j++) if (cross(v[j], v[i])==0) cur=myvector(__gcd(cur.x, v[j].x), __gcd(cur.y, v[j].y));
//cout<<"debug "<<cur.x<<' '<<cur.y<<'\n';
bs.push_back(cur);
}
if (bs.size()>2) cout<<1;
else if (bs.size()==2) cout<<abs(cross(bs[0], bs[1]));
else cout<<-1;
}
/*
3
1 2
4 1
0 0
*/
# | 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... |