Why is my binary search code not working for negative values?

#include
#include
using namespace std;

int b_search(int a[],int n, int k)
{
int s=0;
int e=n-1;

while(s<=e)
{
	int m=(s+e)/2;
	if(a[m]==k)
	{
		return m;
	}

	if(a[m]<k)
	{
		e=m-1;
	}
	else
	{
		s=m+1;
	}
}

return -1;
}

int main() {
int a[100000],n,k;
cin>>n;
for(int i=0 ; i<n ; i++)
{
cin>>a[i];
}
cin>>k;
sort(a,a+n);

cout<<b_search(a,n,k);
return 0;

}

You did a silly mistake with the conditions
Just corrected them.
#include
#include
using namespace std;

int b_search(int a[],int n, int k)
{
int s=0;
int e=n-1;

while(s<=e)
{
int m=(s+e)/2;
if(a[m]==k)
{
return m;
}

 else if(a[m]>k)
{
	e=m-1;
}
else
{
	s=m+1;
}

}
return -1;
}

int main() {
int a[100000],n,k;
cin>>n;
for(int i=0 ; i<n ; i++)
{
cin>>a[i];
}
cin>>k;
sort(a,a+n);

cout<<b_search(a,n,k)<<endl;
return 0;
}