Submission #1358228

#TimeUsernameProblemLanguageResultExecution timeMemory
1358228MrAndriaPortal (BOI24_portal)C++20
1 / 100
1 ms344 KiB
#include <bits/stdc++.h>
using namespace std;
#define ff first
#define ss second
#define pb push_back
#define int long long
set <int> s_x;
vector <int> s_y;
map <int,vector <int> > mp_x,mp_y;
int n,x[2005],y[2005];
signed main(){
    cin>>n;
    int gx=0,gy=0;
    for(int i=1;i<=n;i++){
        cin>>x[i]>>y[i];
    
    }
    vector <pair <int,int> > vec;
    vec.pb({0,0});
    for(int i=1;i<=n;i++){
        for(int j=1;j<=n;j++){
            if(make_pair(y[i],i)<make_pair(y[j],j)){
                vec.pb({x[j]-x[i],y[j]-y[i]});
            }
        }
    }
    for(auto u:vec){
        s_x.insert(u.ff);
        mp_x[u.ff].pb(u.ss);

    }
    for(auto u:s_x){
        sort(mp_x[u].begin(),mp_x[u].end());
        
        for(int i=1;i<mp_x[u].size();i++){
            gx=__gcd(gx,mp_x[u][i]-mp_x[u][i-1]);
        }
    }
    if(gx==0){
        cout<<-1<<endl;
        return 0;
    }
    for(auto u:vec){
        s_y.pb(u.ss);
    }
    sort(s_y.begin(),s_y.end());
    for(int i=1;i<s_y.size();i++){

        gy=__gcd(gy,s_y[i]-s_y[i-1]);
    }
    if(gy==0){
        cout<<-1<<endl;
        return 0;
    }
    cout<<gx*gy<<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...