- 查找最接近的元素
戴妈
- 2025-3-7 13:47:46 @
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxs=1e6+10;
int n;
ll a[maxs],num=0;
ll jiejin(ll b){
ll l=0,r=n-1;
if(b<=a[l]){
return a[l];
}
if(b>=a[r]){
return a[r];
}//是否越界
//ll m=(l+r)/2;//放这里的时候进入循环m不会更新h_h 被卡了好久555
while(r-l>1){
// if(b<a[m]){
// r=m;
// }
ll m=(l+r)/2;
if(b>=a[m]){
//r=m;
l=m;
}
else{
r=m;
}//分段
}
if(abs(a[l]-b)<=abs(a[r]-b)){
return a[l];//判断哪个小
}
return a[r];
}
signed main(){
ll x,s;
cin>>n;
for(ll i=0;i<n;i++){
cin>>a[i];
}
cin>>x;;
for(ll i=0;i<x;i++){
cin>>s;
cout<<jiejin(s)<<endl;
// b[++num]=jiejin(s);
}
// sort(b,b+num,greater<int>());
// for(int i=0;i<num;i++){
// cout<<b[i]<<endl;
// }
return 0;
}
0 comments
No comments so far...
Information
- ID
- 725
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 8
- Tags
- # Submissions
- 78
- Accepted
- 11
- Uploaded By