此题就是二分查找的思想。。。。 具体看代码了。。。 #include <algorithm> using namespace std; int main() { int n,m; int i,k; int arr[10]; int begin,mid,end; while (scanf("%d%d", &n, &m)!=EOF) { for (i=0;i<n;i++) scanf("%d", &arr[i]); sort(arr, arr+n); for (i=0;i<m;i++) { scanf("%d", &k); begin = 0; end = n-1; if (k>=arr[end]||k<arr[begin]) { printf("no such interval/n"); continue; } while (begin<end-1) { mid = (begin+end)/2; if (arr[mid]<=k) begin = mid; else end = mid; } printf("[%d,%d)/n", arr[begin], arr[begin+1]); } puts(""); } return 0; }