# Minimum number of points to be removed to get remaining points on one side of axis

We are given **n** points in a Cartesian plane. Our task is to find the minimum number of points that should be removed in order to get the remaining points on one side of any axis.

**Examples :**

Input : 4 1 1 2 2 -1 -1 -2 2 Output : 1 Explanation : If we remove (-1, -1) then all the remaining points are above x-axis. Thus the answer is 1. Input : 3 1 10 2 3 4 11 Output : 0 Explanation : All points are already above X-axis. Hence the answer is 0.

**Approach :**

This problem is a simple example of constructive brute force algorithm on Geometry. The solution can be approached simply by finding the number of points on all sides of the X-axis and Y-axis. The minimum of this will be the answer.

## C++

`// CPP program to find minimum points to be moved ` `// so that all points are on same side. ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` `typedef` `long` `long` `ll; ` ` ` `// Structure to store the coordinates of a point. ` `struct` `Point ` `{ ` ` ` `int` `x, y; ` `}; ` ` ` `// Function to find the minimum number of points ` `int` `findmin(Point p[], ` `int` `n) ` `{ ` ` ` `int` `a = 0, b = 0, c = 0, d = 0; ` ` ` `for` `(` `int` `i = 0; i < n; i++) ` ` ` `{ ` ` ` `// Number of points on the left of Y-axis. ` ` ` `if` `(p[i].x <= 0) ` ` ` `a++; ` ` ` ` ` `// Number of points on the right of Y-axis. ` ` ` `else` `if` `(p[i].x >= 0) ` ` ` `b++; ` ` ` ` ` `// Number of points above X-axis. ` ` ` `if` `(p[i].y >= 0) ` ` ` `c++; ` ` ` ` ` `// Number of points below X-axis. ` ` ` `else` `if` `(p[i].y <= 0) ` ` ` `d++; ` ` ` `} ` ` ` ` ` `return` `min({a, b, c, d}); ` `} ` ` ` `// Driver Function ` `int` `main() ` `{ ` ` ` `Point p[] = { {1, 1}, {2, 2}, {-1, -1}, {-2, 2} }; ` ` ` `int` `n = ` `sizeof` `(p)/` `sizeof` `(p[0]); ` ` ` `cout << findmin(p, n); ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

## Python3

`# Python3 program to find minimum points to be ` `# moved so that all points are on same side. ` ` ` `# Function to find the minimum number ` `# of points ` `def` `findmin(p, n): ` ` ` ` ` `a, b, c, d ` `=` `0` `, ` `0` `, ` `0` `, ` `0` ` ` `for` `i ` `in` `range` `(n): ` ` ` ` ` `# Number of points on the left ` ` ` `# of Y-axis. ` ` ` `if` `(p[i][` `0` `] <` `=` `0` `): ` ` ` `a ` `+` `=` `1` ` ` ` ` `# Number of points on the right ` ` ` `# of Y-axis. ` ` ` `elif` `(p[i][` `0` `] >` `=` `0` `): ` ` ` `b ` `+` `=` `1` ` ` ` ` `# Number of points above X-axis. ` ` ` `if` `(p[i][` `1` `] >` `=` `0` `): ` ` ` `c ` `+` `=` `1` ` ` ` ` `# Number of points below X-axis. ` ` ` `elif` `(p[i][` `1` `] <` `=` `0` `): ` ` ` `d ` `+` `=` `1` ` ` ` ` `return` `min` `([a, b, c, d]) ` ` ` `# Driver Code ` `p ` `=` `[ [` `1` `, ` `1` `], [` `2` `, ` `2` `], [` `-` `1` `, ` `-` `1` `], [` `-` `2` `, ` `2` `] ] ` `n ` `=` `len` `(p) ` `print` `(findmin(p, n)) ` ` ` `# This code is contributed by Mohit Kumar ` |

*chevron_right*

*filter_none*

**Output :**

1

## Recommended Posts:

- Program to check if the points are parallel to X axis or Y axis
- Number of Integral Points between Two Points
- Check whether two points (x1, y1) and (x2, y2) lie on same side of a given line or not
- Count of obtuse angles in a circle with 'k' equidistant points between 2 given points
- Ways to choose three points with distance between the most distant points <= L
- Minimum lines to cover all points
- Minimum area of a Polygon with three points given
- Number of quadrilaterals possible from the given points
- Number of triangles that can be formed with given N points
- Maximum number of segments that can contain the given points
- Number of triangles in a plane if no more than two points are collinear
- Find the number of points that have atleast 1 point above, below, left or right of it
- Number of horizontal or vertical line segments to connect 3 points
- Number of ordered points pair satisfying line equation
- Orientation of 3 ordered points

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.