在一个上升序列中,查找刚刚小于给定值k的元素。如样例1:2 5 6 8 9 中刚刚比7小的数是6(数据保证存在)
第一行包含一个整数n,为上升序列长度。1 ≤ n ≤ 100000。
第二行包含n个整数,为上升序各元素。所有元素的大小均在0-1,000,000,000之间。
第三行包含一个整数m,为要询问的次数。1 ≤ m ≤ 10000。
接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在0-1,000,000,000之间。
m行,每行一个整数,为刚刚小于给定值k的元素。
5 2 5 6 8 9 3 7 9 18
6 8 9
C++:
- #include
- using namespace std;
- int n,m,a[100005],k;
- int bs(int low,int high,int k){
- while(low<=high){
- int mid=(low+high)/2;
- if(a[mid]==k)return a[mid-1];
- else if(a[mid]
1; - else if(a[mid]>k)high=mid-1;
- }
- return a[high];
- }
- int main(){
- cin>>n;
- for(int i=1;i<=n;i++)cin>>a[i];
- cin>>m;
- for(int i=1;i<=m;i++){
- cin>>k;
- if(k==a[n])
- cout<-1]<
- else if(k>a[n])
-
-
相关阅读:
分布式网络在移动医疗场景中的应用
世界杯观后感
智能合约漏洞,Dyna 事件分析
06-JS字符串
Java分布式系统和云计算教程
[Games101] Lecture 03-04 Transformation
Oracle统计信息问题排查常用SQL
写给Java/Android开发者的Python入门教程
在Windows11系统上搭建SFTP服务器
UDP数据报套接字编程入门
-
原文地址:https://blog.csdn.net/yangrenrui/article/details/133911686