把r=n-1改成r=n就对了
你是从1到n寻找
不是1到n-1
by fafdddb @ 2022-06-24 17:35:17
```cpp
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+10;
int n,m,ans;
struct ty
{
int pos;//下标
int ans;//数量
}a[N];
int binary_search(ty a[],int t)
{
int l=1; int r=n;//n个数的意思
while(l<=r)
{
int mid=l+(r-l)/2;
if(a[mid].ans > t) r=mid-1;
else if(a[mid].ans < t) l=mid+1;
else if(a[mid].ans ==t) return a[mid].pos;
}
if (l >=n || a[l].ans != t) //退出条件
return 0;
return a[l].pos;
}
bool cmp(ty a,ty b)
{
return a.ans < b.ans;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].ans;
a[i].pos=i;
}
sort(a+1,a+1+n,cmp);
cin>>m;
while(m--)
{
int t;
cin>>t;
cout<<binary_search(a,t)<<endl;
}
return 0;
}
```
by fafdddb @ 2022-06-24 17:38:28