Submission #1012459

#TimeUsernameProblemLanguageResultExecution timeMemory
1012459ttamxPortal (BOI24_portal)C++17
1 / 100
84 ms10792 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; const int N=1e5+5; int n; ll x[N],y[N]; 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]; for(int i=2;i<=n;i++){ ll dx=x[i]-x[1],dy=y[i]-y[1]; 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); if(mp.size()==2){ auto [x1,y1]=mp.begin()->second; auto [x2,y2]=mp.rbegin()->second; if(x1==0&&y2==0)cout << y1*x2,exit(0); } auto [x1,y1]=mp.begin()->second; for(auto [m,v]:mp)if(v.second==0)tie(x1,y1)=v; 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...