社区讨论

递归二分,64求调

P2249【深基13.例1】查找参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mkmlx43t
此快照首次捕获于
2026/01/20 21:05
2 个月前
此快照最后确认于
2026/01/24 12:05
上个月
查看原帖
CPP

#include<bits/stdc++.h>
#define maxn 1000000+5
#define ll long long
using namespace std;
ll a[maxn];
ll bisearch(ll a[],ll left,ll right,ll x){
    if(left>right){
        return -1;
    }
    ll mid=(left+right)/2;
    if(a[mid]==x){
        while(a[mid]==x)mid--;
        return mid+1;
    }
    else if(a[mid]<x) return bisearch(a,mid+1,right,x);
    else if(a[mid]>x) return bisearch(a,left,mid-1,x);
}

void solve(){
    ll n;
    int m;
    scanf("%lld%d",&n,&m);
    for(ll i=1;i<=n;i++){
        scanf("%lld",&a[i]);
    }
    for(int i=1;i<=m;i++){
        ll x;
        scanf("%lld",&x);
        ll y=bisearch(a,1,n,x);
        printf("%lld ",y);
    }
}
int main(){
    solve();
}

回复

0 条回复,欢迎继续交流。

正在加载回复...