#include #include using namespace std; const int MAXN = 1e5+4; //定义数组最大长度

int nums[MAXN]; //定义存储数值的数组

int main(){ int n,m; //定义输入的两个整数n和m scanf("%d%d",&n,&m); //读入n和m

for (int i=0; i<n; i++) //循环读入n个数值
	scanf("%d",&nums[i]); //将读入的数值存入数组中

sort(nums, nums+n); //对数组进行排序

while(m--){ //循环读入m个数值
	int x; //定义读入的数值
	scanf("%d",&x); //读入数值

	if (x>=nums[n-1]) //如果读入的数值大于等于数组中最大值
		printf("-1\n"); //输出-1
	else if (x<nums[0]) //如果读入的数值小于数组中最小值
		printf("%d\n", nums[0]); //输出数组中最小值
	else {
		int pos = upper_bound(nums, nums+n, x)-nums; //使用二分查找法找到第一个大于x的数值的位置
		printf("%d\n", nums[pos]); //输出该位置对应的数值
	}
}

return 0; //程序结束
#include cstdio#include algorithmusing namespace std;const int MAXN = 1e5+4; int numsMAXN;int main	int nm;	scanfdd&n&m;	for int i=0; in; i++		scanfd&numsi;	sortnums nums+n;	whilem--		int x;		scanfd&x;

原文地址: https://www.cveoy.top/t/topic/eZ0i 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录