在一个非降序列中,查找与给定值最接近的元素

img

#include 
#include 
#include 
#include 

int main()
{
    int n,m,i,j,mid,x,k;
    int a[100005];

    scanf("%d",&n);
    for (i=0;iscanf("%d",&a[i]);
    }
    scanf("%d",&m);
    for (k=0;kscanf("%d",&x);
        for (i=-1,j=n;i+12;
            if (a[mid]>x)
                j=mid;
            else
                i=mid;
        }
        if (abs(x-a[i])<=abs(a[j]-x))
            printf("%d\n",a[i]);
        else
            printf("%d\n",a[j]);

    }

    return 0;
}


oj只得了5分

二分查找只对有序数组有效,要先将a数组排序才行

题目给的数太大了,用int会越界的
建议改成long long试试
有用记得采纳呐

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^