I've implemented BSEARCH1 with binary search using printf/scanf but still got a TLE. Anythin wrong with my code?
`
#include <iostream>
using namespace std;
int bsearch(long a[], long start, long end, long query)
{
//trival cases
if (start == end) return -1;
if (start + 1 == end)
{
// if found equal, find the lowest index of equals
if (a[start] == query)
{
while (start > 0)
{
while (a[start - 1] == query) start--;
}
return start;
}
else return -1;
}
int middle = (start + end) / 2;
long compare = a[middle];
if (query == compare)
{
while (middle > 0)
{
while (a[middle - 1] == query) middle--;
return middle;
}
}
else if (query > compare) return bsearch(a, middle + 1, end, query);
else return bsearch(a, start, middle, query);
}
int main()
{
//variable names as defined by question
long n;
long q;
long a[100001];
long query;
scanf("%ld", &n);
scanf("%ld", &q); // q is number of queries
//read array
for (long i = 0; i < n; ++i)
{
scanf("%ld", &a[i]);
}
for (long i = 0; i < q; ++i)
{
scanf("%ld", &query);
printf("%ld\n", bsearch(a, 0, n, query));
}
return 0;
}
`