#include
#include
using namespace std;
int main() {
long int a[100000], n, t, m;
cin >> n;
for(int i = 0; i < n; i++){
cin >> a[i];
}
cin >> t;
sort(a, a + n);
while(t–){
cin >> m;
int p = 0, g = n;
int flag = 1;
if(m < a[0] || m > a[n - 1]){
p = -1;
g = -1;
flag = 0;
}
while(p <= g && flag == 1){
int mid = (g + p) / 2;
if(a[mid] > m)
g = mid - 1;
else if(a[mid] < m)
p = mid + 1;
else if(a[mid] == m){
p = mid;
g = mid;
while(a[p - 1] == m && (p - 1) >= 0)
p = p - 1;
while(a[g + 1] == m && (g + 1) <= n - 1)
g = g + 1;
break;
}
}
cout << p << " " << g << endl;
}
return 0;
}
Here is my code and it works perfectly fine in many different test cases that I have tried.