You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.7 KiB

2 years ago
#include <bits/stdc++.h>
using namespace std;
int n, m, a[10000] = {-1};
int main() {
//输入+输出重定向
freopen("../1305.txt", "r", stdin);
//录入数据
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
//m个询问
for (int i = 1; i <= m; i++) {
int x;
cin >> x;
int left = 1, right = n, mid;
/*
leftright[leftright]
left=1right=n
1.mid=(left+right)/2
2.midxa[mid]>x[mid,right]right=mid-1a[mid]<=x[leftmid]right=mid+1
3.left>rightleft=right+1right
4.right=0,a[0]-1.
*/
while (left <= right) { //注意是小于等于
mid = (left + right) / 2; //取中间值
if (a[mid] <= x) {
left = mid + 1; //在右边则left修改为mid+1
} else { //在左边则right修改为mid-1
right = mid - 1;
}
}
//cout << "left=" << left << ",right=" << right << endl;
cout << a[right] << endl;
}
//关闭文件
fclose(stdin);
return 0;
}