#include<bits/stdc++.h> using namespace std; int first(int arr[], int low, int high, int x, int n); int last(int arr[], int low, int high, int x, int n); int count(int arr[], int x, int n) { int i; int j; i = first(arr, 0, n - 1, x, n); if (i == -1) return i; j = last(arr, i, n - 1, x, n); return j - i + 1; } int first(int arr[], int low, int high, int x, int n) { if (high >= low) { int mid = (low + high) / 2; if ((mid == 0 || x > arr[mid - 1]) && arr[mid] == x) return mid; else if (x > arr[mid]) return first(arr, (mid + 1), high, x, n); else return first(arr, low, (mid - 1), x, n); } return -1; } int last(int arr[], int low, int high, int x, int n) { if (high >= low) { int mid = (low + high) / 2; if ((mid == n - 1 || x < arr[mid + 1]) && arr[mid] == x) return mid; else if (x < arr[mid]) return last(arr, low, (mid - 1), x, n); else return last(arr, (mid + 1), high, x, n); } return -1; } int main() { // int n, x; // cin >> n >> x; // int arr[n]; // for (int i = 0; i < n; i++) // { // cin >> arr[i]; // } int arr[] = {1, 2, 2, 2, 2, 3, 4, 7, 8, 8}; int n = 10; int x = 2; int ans = count(arr, x, n); cout << ans << "\n"; return 0; }