Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int gcd(int a, int b) {
- if (a==0) return b;
- if (b==0) return a;
- return gcd(max(a,b)%min(a,b),min(a,b));
- }
- signed main() {
- int a;
- cin>>a;
- int x[a],y[a];
- for (int i=0;i<a;i++) {
- cin>>x[i]>>y[i];
- }
- int ans=0;
- for (int i=0;i<a;i++) {
- map <pair<int,int>,int> used;
- for (int j=0;j<a;j++) if (j!=i) { int p=gcd(abs(x[j]-x[i]),abs(y[j]-y[i]));
- used[{(x[j]-x[i])/p,(y[j]-y[i])/p}]++; }
- for (int j=0;j<a;j++) {
- if (j!=i) {
- int p=gcd(abs(x[j]-x[i]),abs(y[j]-y[i]));
- if (x[j]!=x[i] && y[j]!=y[i]) { ans+=used[{(y[i]-y[j])/p,(x[j]-x[i])/p}];
- }
- else if (x[j]==x[i]) ans+=used[{1,0}]+used[{-1,0}];
- }
- }
- }
- cout<<ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement