0分求救!!!

P2249 【深基13.例1】查找

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,因为要查找第一次出现的数


|