#include<iostream> #include<vector> using namespace std; class Solution{ public: int numberOfBoomerangs1(vector<vector <int>>& points){ int points_size = points.size(); int ans = 0; for(vector<int> firstpoint: points){ for(vector<int> secondpoint: points){ if(samePoint(firstpoint, secondpoint))continue; for(vector<int> thirdpoint: points){ if(samePoint(secondpoint, thirdpoint) || samePoint(firstpoint, thirdpoint)) continue; if(distance(firstpoint, secondpoint) == distance(firstpoint, thirdpoint)){ ans++; cout<<firstpoint[0]<<' '<<firstpoint[1]<<' '<<secondpoint[0]<<' '<<secondpoint[1]<<' '<<thirdpoint[0]<<' '<<thirdpoint[1]<<endl; } } } } return ans; } int numberOfBoomerangs(vector<vector<int>>& points){ int point_size = points.size(); int ans =0; double dist[510][510]; for(int i = 0 ; i < point_size ;i++){ for(int j = 0 ; j < point_size ;j++){ dist[i][j] = distance(points[i],points[j]); } } for(int i = 0 ; i < point_size ; i++){ for(int j = 0 ; j < point_size ; j++){ cout<<dist[i][j]<<' '; } cout<<endl; } /* for(int i = 0 ; i < point_size;i++){ for(int j = i + 1 ; j < point_size ; j++){ if(i == j) continue; for(int k = j + 1 ; k < point_size ; k++) { if(i == k || j == k) continue; if(dist[i][j] == dist[i][k]){ ans += 2; cout<<points[i][0]<<' ' <<points[i][1]<<' '<<points[j][0]<<' '<<points[j][1]<<' '<<points[k][0]<<' '<<points[k][1]<<' '<<dist[i][j]<<' '<<dist[i][k]<<endl; } } } } */ for(int i = 0 ; i < point_size ; i++){ sort(dist[i],dist[i]+point_size); int tmp = 1; for(int j = 0 ; j < point_size ; j++) cout<<dist[i][j]<<' '; cout<<endl; for(int j = 1 ; j < point_size ; j++){ if(dist[i][j] == dist[i][j-1]){ tmp++; } else{ ans += tmp * (tmp-1); tmp = 1; cout<<i<<' '<<j<<' '<<tmp<<endl; } } ans += tmp * (tmp - 1); } return ans; } private: bool samePoint(vector<int> a, vector<int> b){ if(a[0] == b[0] && a[1] == b[1]) return true; return false; } double distance(vector<int> a, vector<int> b){ double rlt = (a[0]-b[0])*(a[0]-b[0]) +(a[1]-b[1])*(a[1]-b[1]); return sqrt(rlt); } }; int main(){ Solution sol; vector<int> point1 = {0,0}; vector<int> point2 = {1,0}; vector<int> point3 = {-1,0}; vector<int> point4 = {0,1}; vector<int> point5 = {0,-1}; vector<vector<int>> ex1 = {point1, point2, point3,point4,point5}; cout<<sol.numberOfBoomerangs(ex1)<<endl; // vector<int> ex2_point1 = {1,1}; // vector<int> ex2_point2 = {2,2}; // vector<int> ex2_point3 = {3,3}; // vecotr<int> ex2_point4 = { vector<int> ex2_point1 = {0,0}; vector<int> ex2_point2 = {0,1}; vector<int> ex2_point3 = {5,0}; vector<int> ex2_point4 = {5,1}; vector<vector<int>> ex2 = {ex2_point1, ex2_point2, ex2_point3,ex2_point4}; cout<<sol.numberOfBoomerangs(ex2)<<endl; return 0; }