我的搜索竟然全WA,求各位看看我的搜索怎么错了。本人刚学二分
#include <bits/stdc++.h>
#define ERROR -1
using namespace std;
long long n,q,temp;
queue <int> p;
struct point{
long long number,i;
}a[100005];
long long sreach(point data[],long long n,long long x){//定义序列和要查找的数字
long long l=0,r=n-1,middle;//定义双指针和中间值
while(l<=r){
middle=(l+r)/2;
if(data[middle].number == x){
return middle;
}
if(data[middle].number > x){
r=middle-1;
}
else{
l=middle+1;
}
}
return ERROR;
}
bool cmp(point aa,point bb){
return aa.number<bb.number;
}
int main(){
scanf("%lld",&n);
for(long long i=0;i<n;++i){
scanf("%lld",&a[i].number);
a[i].i=i+1;
}
sort(a,a+n,cmp);
scanf("%lld",&q);
for(long long i=0;i<q;++i){
scanf("%lld",&temp);
long long pos=sreach(a,n,temp);
if(pos != ERROR){
p.push(pos);
}
else{
p.push(0);
}
}
while(!p.empty()){
printf("%lld \n",p.front());
p.pop();
}
return 0;
}