Find number of squares from N points
I love mathematics π
So,Today morning I decided to solve mathematical problem.
Identify all square from given N points.
lets first store points in vector
const int limit=10000
vector < int > points[limit]
assume point is (x,y)
points[x].push_back( y)
in points vector we are keeping all points having same x coordinate .
now sort every points vector by y coordinate
for each possible x coordinate
sort( points[x].begin() , points[x].end())
how we check point (x,y) exist
bool exists(int x, int y) {
if (x > upperLimit) return false
return binary_search(points[x], y)
}
now we will write function to check square is identified previously or not to avoid duplicacy in answer.
we can store diagonal points in map
map[{x1,y1}, {x2, y2}] = 1
Then for each pair of points from vector points
lets it be (k, y 1) and (k, y 2)
check: is there squere that contain them as vertexes. So we should check: is there(in input) pair of points (k β |y 2 β y 1|, y 1) and (k β |y 2 β y 1|, y 2), or pair (k + |y 2 β y 1|, y 1) and (k + |y 2 β y 1|, y 2).
if square exist then we check in map is it already counted in answer if not then we will increment the answer and add this square into map.
finally solved.