1795: 查找小于k的最大数
Memory Limit:128 MB
Time Limit:1.000 S
Judge Style:Text Compare
Creator:
Submit:49
Solved:21
Description
给定一个己递增有序的整数数组 a。要求你用倍增法快速找出 a数组中小于k的最大数。
比如在一个数组a {5,7,9,11,13,16} 中查找最大的小于13的数字。
朴素做法:从第一个数开始,一个一个往后枚举,查找。
二分做法:每次将数列分割一半判断,并且进一步查找子区间。
倍增做法:设定一个增长长度 p 和已确定长度 l,现在要确定 a[l+p] 是否满足条件,若满足条件(比12小),则 p 成2倍增长;否则 p 缩小范围(试着缩小范围判断条件)。
比如在一个数组a {5,7,9,11,13,16} 中查找最大的小于13的数字。
朴素做法:从第一个数开始,一个一个往后枚举,查找。
二分做法:每次将数列分割一半判断,并且进一步查找子区间。
倍增做法:设定一个增长长度 p 和已确定长度 l,现在要确定 a[l+p] 是否满足条件,若满足条件(比12小),则 p 成2倍增长;否则 p 缩小范围(试着缩小范围判断条件)。
Input
输入第一行两个正整数n,k,表示a数组中数据个数与 k。
第二行为n个己递增有序的正整数,数据间空一格分隔。
Output
输出一个正整数为a数组中小于k的最大数。
Sample Input Copy
10 13
3 5 9 10 11 12 13 14 17 19
Sample Output Copy
12
HINT
1=<n<=300000
数组a中的数 <=10^9