VOOZH about

URL: https://www.geeksforgeeks.org/dsa/count-points-from-an-array-that-lies-inside-a-semi-circle/

⇱ Count points from an array that lies inside a semi-circle - GeeksforGeeks


  • Courses
  • Tutorials
  • Interview Prep

Count points from an array that lies inside a semi-circle

Last Updated : 23 Jul, 2025

Given two pairs (X, Y), (P, Q) and R the coordinate of the center of semi-circle, coordinate of the intersection of semicircle and diameter of the semicircle and, the radius of the semicircle, and an array arr[] of dimension N*2 consisting of the coordinates of few points, the task is to find the number of points from the array that lies inside or on the 
semicircle
Note: The semicircle above the diameter is considered.

Examples:

Input: X = 0, Y = 0, R = 5, P = 5, Q = 0, arr[][] = { {2, 3}, {5, 6}, {-1, 4}, {5, 5} }
Output: 2
Explanation: The points {2, 3} and {-1, 4} are inside the semi-circle.

👁 Image

Input: X = 2, Y = 3, R = 10, P = 12, Q = 3, arr[][] = { {-7, -5}, {0, 6}, {11, 4} }
Output: 2

Approach: The given problem can be solved based on the following observations: 

  • The points that lies on or inside the semicircle must be above or on the diameter of semicircle and the distance between center and that point should be ? R.
  • Suppose  is the equation of diameter. 
    The point (R, S) lies above the line if 

     
  • A point (R, S) lies above the line formed by joining points (X, Y) and (P, Q) if

Follow the steps below to solve the problem:

  • Find the equation of line the diameter of the semi-circle from the points (X, Y) and (P, Q).
  • Initialize a variable, say ans, to store the count of required points.
  • Traverse the array arr[] and perform the following operations:
    • Calculate the distance between the points (X, Y) and (P, Q) and store it in a variable, say d.
    • Put arr[i][0] and arr[i][1] in the place of R and S respectively, in the formula 

      and store the result in a variable, say f.
    • Increment the count of ans by 1 if R ? d and f ? 0.
  • After completing the above steps, print the value stored in ans.

Below is the implementation of the above approach:


Output: 
2

 

Time Complexity: O(N)
Auxiliary Space: O(1)

Comment