1
class Solution {
2
public:
3
bool validSquare(vector<int> &p1, vector<int> &p2, vector<int> &p3, vector<int> &p4) {
4
vector<vector<int>> p{p1, p2, p3, p4};
5
unsigned short ans{0};
6
double scal;
7
vector<double> bar(2);
8
/* compute the barycenter */
9
bar[0] = (p1[0] + p2[0] + p3[0] + p4[0]) / 4.;
10
bar[1] = (p1[1] + p2[1] + p3[1] + p4[1]) / 4.;
11
const double length = pow(p1[0] - bar[0], 2) + pow(p1[1] - bar[1], 2);
12
for (size_t i = 0; i < 4; i++) {
13
if ((pow(p[i][0] - bar[0], 2) + pow(p[i][1] - bar[1], 2)) != length) return false;
14
for (size_t j = i + 1; j < 4; j++) {
15
scal = (bar[0] - p[i][0]) * (bar[0] - p[j][0]) + (bar[1] - p[i][1]) * (bar[1] - p[j][1]);
16
ans += (scal == 0.) ? 1 : 0;
17
}
18
}
19
return ans == 4;
20
}
21
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0