Submission #1012463

#TimeUsernameProblemLanguageResultExecution timeMemory
1012463ttamxPortal (BOI24_portal)C++17
1 / 100
58 ms10804 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; const int N=1e5+5; int n; int piv; ll x[N],y[N]; map<ll,ll> pre; map<pair<ll,ll>,pair<ll,ll>> mp; int main(){ cin.tie(nullptr)->sync_with_stdio(false); cin >> n; for(int i=1;i<=n;i++){ cin >> x[i] >> y[i]; if(pre.count(x[i])){ if(pre[x[i]]!=y[i])piv=i; }else{ pre[x[i]]=y[i]; piv=i; } } for(int i=1;i<=n;i++)if(i!=piv){ ll dx=x[i]-x[piv],dy=y[i]-y[piv]; ll g=gcd(dx,dy); if(dx<0)dx=-dx,dy=-dy; if(dx==0)dy=abs(dy); pair<ll,ll> m(dx/g,dy/g); if(mp.count(m)){ mp[m].first=gcd(mp[m].first,dx); mp[m].second=gcd(mp[m].second,dy); }else{ mp[m]={dx,dy}; } } if(mp.size()<2)cout << -1,exit(0); auto [x1,y1]=mp.begin()->second; ll ans=0; for(auto [m,v]:mp){ auto [x2,y2]=v; if(x1==x2&&y1==y2)continue; ll c=x1*y2-x2*y1; ll d=y2/gcd(y1,y2); ll e=c*d; ll g=gcd(e,y2); ans=gcd(ans,e/g); } cout << ans; }
#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...