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
@魂逝_秦月歌 大概是输入有
by 魂逝_秦月歌 @ 2023-10-14 21:40:27
@huangruiheng0217 有道理,谢谢佬