请问一下各位

P2249 【深基13.例1】查找

ysqfirmament @ 2023-01-13 21:01:19

#include<bits/stdc++.h>
using namespace std;
using ll=long long;
const ll N=1e8;
ll n;
ll a[N];
int main()
{
    ios::sync_with_stdio(false);
    ll q;
    cin>>n>>q;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    while(q--)
    {
        ll x;
        cin>>x;
        ll ans=lower_bound(a+1,a+n+1,x)-a;
        if(x!=a[ans]) cout<<-1<<" ";
        else cout<<ans<<" ";
    }
}

为什么改成(int i=0;i<n;i++)和lower_bound(a,a+n,x)-a就不对


by 鱼跃于渊 @ 2023-01-13 21:11:18

@ysqfirmament 因为题目中 a 数组下标是从 1 开始,而你这是从 0 开始,所以输出是时要加 1 。


by ysqfirmament @ 2023-01-15 17:38:27

@TianShuiXingHe 哦哦,忽略这个地方了,谢谢!


|