# Count elements such that there are exactly X elements with values greater than or equal to X

Given an array *arr* of *N* integers, the task is to find the number of elements that satisfy the following condition:

If the element is *X* then there has to be exactly *X* number of elements in the array (excluding the number *X*) which are greater than or equal to *X*

**Examples:**

Input:arr[] = {1, 2, 3, 4}Output:1 Only element 2 satisfies the condition as there are exactly 2 elements which are greater than or equal to 2 (3, 4) except 2 itself.Input:arr[] = {5, 5, 5, 5, 5}Output:0

**Approach:** The problem involves efficient searching for each arr[i] element the number of arr[j]’s (i != j) which are greater than or equal to arr[i].

- Sort the array in ascending order.
- For every element arr[i], using binary search get the count of all the elements that are greater than or equal to arr[i] except arr[i] itself.
- If the count is equal to arr[i] then increment the result.
- Print the value of the result in the end.

Below is the implementation of the above approach:

`// C++ implementation of the approach ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` `#define ll long long ` ` ` `ll ` `int` `getCount(vector<ll ` `int` `> v, ` `int` `n) ` `{ ` ` ` `// Sorting the vector ` ` ` `sort((v).begin(), (v).end()); ` ` ` `ll ` `int` `cnt = 0; ` ` ` `for` `(ll ` `int` `i = 0; i < n; i++) { ` ` ` ` ` `// Count of numbers which ` ` ` `// are greater than v[i] ` ` ` `ll ` `int` `tmp = v.end() - 1 ` ` ` `- upper_bound((v).begin(), (v).end(), v[i] - 1); ` ` ` ` ` `if` `(tmp == v[i]) ` ` ` `cnt++; ` ` ` `} ` ` ` `return` `cnt; ` `} ` ` ` `// Driver code ` `int` `main() ` `{ ` ` ` `ll ` `int` `n; ` ` ` `n = 4; ` ` ` `vector<ll ` `int` `> v; ` ` ` `v.push_back(1); ` ` ` `v.push_back(2); ` ` ` `v.push_back(3); ` ` ` `v.push_back(4); ` ` ` ` ` `cout << getCount(v, n); ` ` ` `return` `0; ` `} ` |

*chevron_right*

*filter_none*

**Output:**

1

## Recommended Posts:

- Noble integers in an array (count of greater elements is equal to value)
- Count of elements whose absolute difference with the sum of all the other elements is greater than k
- Replace repeating elements with greater that greatest values
- Count smaller elements on right side and greater elements on left side using Binary Index Tree
- Sum of elements in an array with frequencies greater than or equal to that element
- Adding elements of an array until every element becomes greater than or equal to k
- Length of longest subarray in which elements greater than K are more than elements not greater than K
- Count subarrays with all elements greater than K
- Count sub-arrays which have elements less than or equal to X
- Count elements smaller than or equal to x in a sorted matrix
- Count of index pairs with equal elements in an array
- Count subarrays with equal number of occurrences of two given elements
- Count pairs in an array such that both elements has equal set bits
- Count of smaller or equal elements in sorted array
- Count elements less than or equal to a given value in a sorted rotated array

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.