// Count Occurrence (Lower & Upper Bound)
#include <bits/stdc++.h>
using namespace std;
int lowerBound(vector<int>& arr, int x) {
int l = 0, r = arr.size();
while(l < r) {
int mid = l + (r - l) / 2;
if(arr[mid] < x) l = mid + 1;
else r = mid;
}
return l;
}
int upperBound(vector<int>& arr, int x) {
int l = 0, r = arr.size();
while(l < r) {
int mid = l + (r - l) / 2;
if(arr[mid] <= x) l = mid + 1;
else r = mid;
}
return l;
}
int main() {
int n = 6, x = 2;
vector<int> arr = {1,2,2,2,3,4};
cout << upperBound(arr, x) - lowerBound(arr, x);
}
Ly8gQ291bnQgT2NjdXJyZW5jZSAoTG93ZXIgJiBVcHBlciBCb3VuZCkKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbG93ZXJCb3VuZCh2ZWN0b3I8aW50PiYgYXJyLCBpbnQgeCkgewogICAgaW50IGwgPSAwLCByID0gYXJyLnNpemUoKTsKICAgIHdoaWxlKGwgPCByKSB7CiAgICAgICAgaW50IG1pZCA9IGwgKyAociAtIGwpIC8gMjsKICAgICAgICBpZihhcnJbbWlkXSA8IHgpIGwgPSBtaWQgKyAxOwogICAgICAgIGVsc2UgciA9IG1pZDsKICAgIH0KICAgIHJldHVybiBsOwp9CgppbnQgdXBwZXJCb3VuZCh2ZWN0b3I8aW50PiYgYXJyLCBpbnQgeCkgewogICAgaW50IGwgPSAwLCByID0gYXJyLnNpemUoKTsKICAgIHdoaWxlKGwgPCByKSB7CiAgICAgICAgaW50IG1pZCA9IGwgKyAociAtIGwpIC8gMjsKICAgICAgICBpZihhcnJbbWlkXSA8PSB4KSBsID0gbWlkICsgMTsKICAgICAgICBlbHNlIHIgPSBtaWQ7CiAgICB9CiAgICByZXR1cm4gbDsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbiA9IDYsIHggPSAyOwogICAgdmVjdG9yPGludD4gYXJyID0gezEsMiwyLDIsMyw0fTsKICAgIGNvdXQgPDwgdXBwZXJCb3VuZChhcnIsIHgpIC0gbG93ZXJCb3VuZChhcnIsIHgpOwp9