Can you help me?????

查找

题目ID:9265必做题100分

订正得分

赛中得分

最新提交:

Wrong Answer

0 分

历史最高:

Wrong Answer

0 分

时间限制: 1000ms

空间限制: 512000kB

题目描述

现在有 n 个从小到大排好序的数。有 Q 次询问,每次问你第一个大于等于 k 的数字排在第几个?若不存在则输出 n+1。

输入格式

第一行两个整数 n,Q。第二行 n 个整数,表示已经从小到大排完序的数。接下来 Q 行,每行一个整数 k 。

输出格式

共 Q 行,每行一个整数,表示询问的数所在的位置。

样例

Input 1

4 3 1 3 4 6 3 5 10

Output 1

2 4 5

样例解释

对于第一次询问,大于等于3的第一个数是3,3在数列中的位置为2;对于第二次询问,大于等于5的第一个数是6,6在数列中的位置为4;对于第三次询问,大于等于10的数不存在,所以输出数列长度加一,即5。

数据范围

每个数不超过 100000。

3 个赞

核心代码

while(l<r){
    int mid=(l+r)/2;//这行如果不对你再试一下这个代码int mid=(l+r+1)/2;
    if(a[mid]<k)l=mid+1;
    else r=mid;
}
if(l!=r)cout<<n+1;
else cout<<l;
1 个赞

666,怎么抄袭我的题目啊 :enraged_face:

1 个赞

(帖子已被作者删除)

1 个赞

:face_with_symbols_on_mouth:

1 个赞

其实lower_bound更适合新手QwQ

真的假的,我都没见过这玩意(仅代表个人观点)