二分法的固定套路
找到大于等于的第一个值
public class Main {
public static void main(String[] args) {
int n,m;
Scanner scanner = new Scanner(System.in);
n=scanner.nextInt();
m=scanner.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++){
a[i]=scanner.nextInt();
}
Arrays.sort(a);
for (int i = 0; i < m; i++) {
int left=0;
int right=n-1;
int nin=scanner.nextInt();
while(left<=right){
int mid=(left+right)/2;
if(a[mid]>=nin){
right=mid-1;
}else{
left=mid+1;
}
}
int ans=-1;
// if(right<0){
// ans=a[left]>=nin?a[left]:-1;
// if(left>=n){
// ans=a[right]>=nin?a[right]:-1;
// }else {
// ans = a[right] >= nin ? a[right] : a[left];
// ans = ans >= nin ? ans : -1;
// }
ans=left>=n?-1:a[left];
ans=ans>=nin?ans:-1;
System.out.println(ans);
}
}
}