为什么二分法第一个wa最后一个tle
查看原帖
为什么二分法第一个wa最后一个tle
642186
Aa12345FF楼主2023/12/25 11:04
#include <iostream>
#include <map>
using namespace std;
int arr[1000001];
int main(){
    int n,m;cin>>n>>m;
    for(int i=1;i<=n;i++){
        scanf("%d",&arr[i]);
    }
    for(int i=1,u;i<=m;i++){
        scanf("%d",&u);
        int l=1,r=n,mid;
        while(true){
            mid=(l+r)/2;
            if(u==arr[mid]){
                break;
            }else if(u>arr[mid]){
                l=mid+1;
            }else{
                r=mid;
            }
            if(l>=r)break;
        }
        if(arr[mid]!=u and arr[r]!=u)cout<<-1<<' ';
        else{
            while(arr[mid]==u){
                mid--;
            }
            cout<<mid+1<<" ";
        }
    }
    return 0;
}

2023/12/25 11:04
加载中...