rt
#include<bits/stdc++.h>
using namespace std;
int n,m,x;
struct stu{
int val;
int num;
};
bool cmp(stu x,stu y){
return x.val<y.val;
}
stu a[100001];
int main() {
scanf("%d",&n);
for(int i=1;i<=n;i++){
scanf("%d",&a[i].val);
a[i].num=i;
}
sort(a+1,a+n+1,cmp);
scanf("%d",&m);
for(int i=1;i<=m;i++){
scanf("%d",&x);
int l=1,r=n,mid;
while(l<=r){
mid=(l+r)/2;
if(a[mid].val<x)l=mid+1;
else if(a[mid].val>x)r=mid-1;
if(m>=1&&m<=n&&a[mid].val==x){
printf("%d\n",a[mid].num);
break;
}
}
if(a[mid].val!=x)printf("0");
}
return 0;
}
教练说二分没写对,求改进方案 (附题目:https://oj.czos.cn/p/2217)