第一个wa,共84分,怎么改

P2249 【深基13.例1】查找

custzr @ 2023-05-30 21:24:05

#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[1000010],q[100010];
int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    scanf("%d",&a[i]);
    for(int i=1;i<=m;i++)
    scanf("%d",&q[i]);
    for(int i=1;i<=m;i++)
    {
    int l=0,r=n;
    while(l<r)
    {
        long long mid=(l+r)/2;
        if(a[mid]>=q[i])
        r=mid;
        else
        l=mid+1;
    }
            if(a[l]!=q[i])
        printf("-1 ");
        else
        printf("%d ",l);
    }
    return 0;
}

by huangruiheng0217 @ 2023-05-30 21:34:25

int l=0;

改成

int l=1;

试试?


by custzr @ 2023-06-06 19:57:20

@huangruiheng0217 过了过了,谢谢大佬


by 魂逝_秦月歌 @ 2023-10-12 21:22:37

@huangruiheng0217 不大理解为什么这么改就能对。。。


by huangruiheng0217 @ 2023-10-12 21:35:51

@魂逝_秦月歌 大概是输入有 0 的时候就会挂吧,因为 a_0=0


by 魂逝_秦月歌 @ 2023-10-14 21:40:27

@huangruiheng0217 有道理,谢谢佬


|