#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;
#include
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; //程序结束
原文地址: https://www.cveoy.top/t/topic/eZ0i 著作权归作者所有。请勿转载和采集!