LLX7 @ 2024-03-12 17:12:08
#include<bits/stdc++.h>
using namespace std;
const int N=10005;
int a[N],n,m,b[N];
int find(int x){
int l=1;
int r=n;
while(l<=r){
int mid=l+(r-l)/2;
if(x<a[mid]){
r=mid-1;
}
if(x>a[mid]){
l=mid+1;
}
if(x==a[mid]) return mid;
}
return -1;
}
int main(){
cin>>n>>m;
a[0]=-1;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=0;i<m;i++) cin>>b[i];
for(int i=0;i<m;i++) cout<<find(b[i])<<" ";
}
by ZouCY @ 2024-03-13 23:20:05
你在更新r的时候应该直接定位在mid,因为要查找第一次出现的数