0
已解决
王子逸
新手天翼
新手天翼
我实在是看不出来哪错了!
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,a[100001],x;
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=m;i++)
{
cin>>x;
if(lower_bound(a+1,n+a+1,x)-a==n+1)
{
cout<<-1<<endl;
}
else
{
cout<<lower_bound(a+1,n+a+1,x)-a<<endl;
}
}
return 0;
}
0
已采纳
朱优扬
中级天翼
中级天翼
额……你知道lower_bound查找的是什么吗?
朱优扬在2021-11-11 12:34:18追加了内容
当前查找位置是第一个>=k的元素
而且整个序列是单调递增的
所以:
如果当前位置不是t,那就说明当前位置已经>t了
大于t也说明了在<=t的范围内没有找到t,所以当前序列就没有t这个元素(再加个判断就好)
0