有re,也有wrong answer,电脑上跑是对的
查看原帖
有re,也有wrong answer,电脑上跑是对的
1517170
XUXY06楼主2025/1/6 01:34
#include<bits/stdc++.h>
using namespace std;
int n,m,q,arr[1000005];
int Bisearch(int arr[],int q,int l,int r) {
    if (l>r)
        return -1;
    else {
        int mid=(l+r)/2;
        if (arr[mid]==q) {
            if (arr[mid]==arr[mid-1])
                return Bisearch(arr,q,1,mid-1);
            else
                return mid;
        }
        else if (arr[mid]>q) {
            return Bisearch(arr,q,l,mid-1);
        }
        else if (arr[mid]<q) {
            return Bisearch(arr,q,mid+1,r);
        }
    }
}
int main()
{cin>>n>>m;
    for (int i=1;i<=n;i++)
        cin>>arr[i];
    for (int i=1;i<=m;i++) {
        cin>>q;
        cout<<Bisearch(arr,q,1,n)<<" ";
    }
    return 0;
}
2025/1/6 01:34
加载中...