二分查找-变形1求助

  1. 二分查找-变形1
    题目ID:9331必做题100分
    最新提交:
    Wrong Answer
    0 分
    历史最高:
    Wrong Answer
    0 分
    时间限制: 1000ms
    空间限制: 262144kB
    题目描述
    二分查找:输入
    n
    n 个从小到大的有序数,使用二分查找第一个大于
    m
    m 的数的位置(计数从 1 开始)。

输入格式
第一行一个整数
n
n,第二行
n
n 个整数
a
i
a
i

表示要查找的有序数列,第三行若干个整数
m
i
m
i

表示要查找的数字(最多有
S
S 个)。

输出格式
输出若干个空格分隔的整数,代表第一个比
m
i
m
i

大的数的位置。如果没有这样的数输出
n
+
1
n+1 。

样例
Input 1
7
1 2 2 4 5 7 9
2 3 4 10
Output 1
4 4 5 8
数据范围
0
<
n

1
0
5
0<n≤10
5

0

a
i

1
0
6
0≤a
i

≤10
6

0

m
i

1
0
6
0≤m
i

≤10
6

0
<
S

1000
0<S≤1000。

1 个赞

代码呢?

格式炸了呀,能不能改一下,看不了

        while (L<R){
			int mid=(L+R)/2;
			if(a[mid]>m)R=mid;
			else L=mid+1;
		}
        if(a[L]>m){
			cout<<L<<" ";
		}
		else {
			cout<<n+1<<" ";
		}

放个核心代码先

  1. 二分查找-变形1
    题目ID:9331必做题100分
    最新提交:
    Wrong Answer
    0 分
    历史最高:
    Wrong Answer
    0 分
    时间限制: 1000ms
    空间限制: 262144kB
    题目描述
    二分查找:输入 n
    n 个从小到大的有序数,使用二分查找第一个大于 m
    m 的数的位置(计数从 1 开始)。
    输入格式
    第一行一个整数 n,第二行 n 个整数 a[i]
    表示要查找的有序数列,第三行若干个整数
    m[i]
    表示要查找的数字(最多有 S 个)。
    输出格式
    输出若干个空格分隔的整数,代表第一个比
    m[i]大的数的位置。如果没有这样的数输出
    n+1。
    样例
    Input 1
    7
    1 2 2 4 5 7 9
    2 3 4 10
    Output 1
    4 4 5 8
    数据范围
    0<n≤10^5 ,0≤a[i]≤10^6,0≤m [i]≤10 ^6,0<S≤1000

你自己的代码呢?

A了是吗?

1 个赞

还没

这的问题,再想想还有什么情况?

1 个赞

还有可能比num大,只有比num大才输出

懂???

现在是15分

== 改成 >

(>=)改成 >

第16行 >= 改成 >

第23行 L 改成 n

AC了

给个解决方案

1 个赞

给了

对了,把这个放到问题讨论区

社区不让发AC代码