Submission #1219478

#TimeUsernameProblemLanguageResultExecution timeMemory
121947812345678Portal (BOI24_portal)C++20
11 / 100
2096 ms4700 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...