2019-03-16 查找最接近的元素

#include
#include
using namespace std;
const int maxn=100000+10;
int a[maxn],b[10001];
int upper_bound(int *A,int n,int x)
{
    int L=0,R=n-1,mid;
    while(L<=R)
    {
        int mid=(L+R)/2;
        if(A[mid]<=x) L=mid+1;
        else R=mid-1;       
    }
    return L;   
}
int main(void)
{
    int n,m;
    cin>>n;
    for(int i=0;i>a[i];
    cin>>m;
    for(int i=1;i<=m;i++) cin>>b[i];
    for(int i=1;i<=m;i++)
    {
        int p=upper_bound(a,n,b[i]);
        if(p==n) b[i]=a[n-1];
        else if(p==0) b[i]=a[0];
        else b[i]=a[p]-b[i]>b[i]-a[p-1]?a[p-1]:a[p];
    }
    for(int i=1;i<=m;i++)
    {
        cout<< b[i];
        if(i!=m) cout<

你可能感兴趣的:(2019-03-16 查找最接近的元素)