代码如下,实在想不出来怎么办了, 求大神支援
#include
#include
using namespace std;
int compare(const void *a, const void *b)
{
int *pa = (int *)a;
int *pb = (int *)b;
return (*pa)-(*pb);
}
int bin_search(int point_array[], int low, int high, int ans)
{
int mid, left = low, right = high;
while(left <= right)
{
mid = left +((right - left) >> 1);
if(point_array[mid] >= ans) right = mid - 1;
else left = mid + 1;
}
return left;
}
int main()
{
int num_point, num_search;
cin>>num_point>>num_search;
int *point_array = new int [num_point];
for(int i = 0; i < num_point ; i++)
{
cin >> point_array[i];
}
qsort(point_array, num_point, sizeof(int), compare);
int left_bind,right_bind;
for(int i = 0; i < num_search ; i++)
{
cin >> left_bind >> right_bind;
if(left_bind >right_bind)
{
int temp = left_bind;
left_bind = right_bind;
right_bind = temp;
}
int find_left = bin_search(point_array, 0, num_point-1, left_bind);
int find_right = bin_search(point_array, 0, num_point-1, right_bind);
int ans = find_right - find_left;
if(point_array[find_right] == right_bind) ans++;
if(ans <0) ans = 0;
cout << ans <<endl;
}
return 0;
}