求助一下大佬们

image
image
代码:#include<bits/stdc++.h>
using namespace std;
int m[100005]={0};
int a[1000005]={0};
int n,mid,ci=0;
int two(int m,int a){
int l=0,r=n;
while(l<r){
mid=(l+r)/2;
if(m[mid]>a){
r=mid;
}
else if(m[mid]<a){
l=mid+1;
}
else{
if(m[mid-1]==m[mid]){
mid=mid-1;
}
return mid+1;
}
}
return 0;
}
int main(){
cin>>n;
for(int i=0;i<n;i++){
cin>>m[i];
}
int i=-1;
do{
i++;
cin>>a[i];
if(a[i]==0){
break;
}
int l=0,mid=0,r=n;
int result=two(m,a[i]);
cout<<result<<" “;
//cout<<“a[i]=”<<a[i]<<” ";
}while(a[i]!=0);
return 0;
}
请求指点一下

@Harry.Potter e模板题,建议直接查oiwiki,u哦者提供另一种思路,这道题目 st表也可以做