Submission #1125686

#TimeUsernameProblemLanguageResultExecution timeMemory
1125686tte0Portal (BOI24_portal)C++20
1 / 100
2094 ms3852 KiB
// Author: Teoman Ata Korkmaz
#include <bits/stdc++.h> 
#define int int_fast64_t
using namespace std;
///////////////////////////////////////////////////////////
int n,mnx,mny;
vector<tuple<int,int>> v;

signed main(void){
    cin>>n;
    int x,y,a,b;
    for(int i=0;i<n;i++){
        cin>>x>>y;
        if(!i)a=x,b=y;
        v.push_back({x-a,y-b});
    }

    for(auto [a,b]:v){
        cerr<<"v:"<<a<<","<<b<<endl;
    }

    int ansx=0,ansy=0;
    for(int i=0;i<n;i++){
        for(int j=i+1;j<n;j++){
            // cerr<<"i,j:"<<i<<" "<<j<<endl;
            auto [xi,yi]=v[i];
            auto [xj,yj]=v[j];
            if(xi<0)xi*=-1,yi*=-1;
            if(yi<0)xj*=-1,yj*=-1;
            
            int a=(xi==xj) ? yi : yi*(xj/gcd(xi,xj));
            int b=(xi==xj) ? yj : yj*(xi/gcd(xi,xj));
            // cerr<<"a";
            ansx=gcd(ansx,abs(a-b));
            // cerr<<"a";
            if(xj<0)xi*=-1,yi*=-1;
            if(yj<0)xj*=-1,yj*=-1;
            // cerr<<"a";
            a=(yi==yj) ? xi : xi*(yj/gcd(yi,yj));
            b=(yi==yj) ? xi : xj*(yi/gcd(yi,yj));
            // cerr<<"a";
            ansy=gcd(ansy,abs(a-b));
            // cerr<<"a"<<endl;
        }
    }

    cout<<(ansx && ansy ? (ansx/gcd(ansx,ansy))*ansy : -1)<<endl;
}

#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...