Advertisement
Guest User

Untitled

a guest
Jul 26th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3.  
  4. #define MAX 1010
  5. #define mp make_pair
  6. #define ff first
  7. #define ss second
  8.  
  9. typedef long long ll;
  10. using namespace std;
  11.  
  12.  
  13. struct myStruct
  14. {
  15.     ll x, y, mx, my;
  16.     myStruct() {}
  17.     myStruct(ll x, ll y, ll mx, ll my ) : x(x), y(y), mx(mx), my(my){};
  18.     bool operator < (const myStruct &o) const
  19.     {
  20.         if ( x != o.x ) return x < o.x;
  21.         if ( y != o.y ) return y < o.y;
  22.         if ( mx != o.mx ) return mx < o.mx;
  23.         return my < o.my;
  24.     }
  25. };
  26.  
  27. ll gcd(ll a, ll b)
  28. {
  29.     if ( b == 0ll) return a;
  30.     return gcd(b, a%b);
  31. }
  32.  
  33. int xs[MAX];
  34. int ys[MAX];
  35.  
  36.  
  37. int main()
  38. {
  39.     int n;
  40.     cin>>n;
  41.     map<pair<ll, ll>, ll> map1;
  42.     map<myStruct, ll> map2;
  43.     for( int i = 0; i < n; i++ )
  44.     {
  45.         cin>>xs[i]>>ys[i];
  46.         xs[i] *= 2ll;
  47.         ys[i] *= 2ll;
  48.     }
  49.     for( int i = 0; i < n; i++ )
  50.     {
  51.         for( int j = i+1; j < n; j++ )
  52.         {
  53.             ll cx = (xs[i]+xs[j])/2ll;
  54.             ll cy = (ys[i]+ys[j])/2ll;
  55.             ll dx = xs[i] - xs[j];
  56.             ll dy = ys[i] - ys[j];
  57.             ll myGcd = gcd(dx, dy);
  58.             dx /= myGcd;
  59.             dy /= myGcd;
  60.             map1[mp(cx, cy)] = map1[mp(cx, cy)] + 1ll;
  61.             map2[myStruct(cx, cy, dx, dy)] = map2[myStruct(cx, cy, dx, dy)] + 1ll;
  62.         }
  63.     }
  64.     ll result = 0ll;
  65.     for( auto v : map2 )
  66.     {
  67.         result += v.ss*(map1[mp(v.ff.x, v.ff.y)] - v.ss);
  68.     }
  69.     result /= 2ll;
  70.     cout<<result<<"\n";
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement