Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
23743 | U•ェ•*✔ | 【二分】查找最接近的元素 | C++ | 解答错误 | 0 MS | 260 KB | 497 | 2023-07-16 17:03:16 |
#include"bits/stdc++.h" using namespace std; int a[100005]; int n,m,x; int s1(int x){ int l=0,r=n-1; while(l<r){ int mid=l+r>>1; if(a[mid])r=mid; else l=mid+1; } return l; } int s2(int x){ int l=0,r=n-1; while(l<r){ int mid=l+r+1>>1; if(a[mid])l=mid; else r=mid-1; } return l; } int main(){ cin>>n; for(int i=0;i<n;i++)cin>>a[i]; cin>>m; while(m--){ cin>>x; if(abs(s1(x)-x)>=abs(s2(x)-x)) cout<<s2(x)<<'\n'; else cout<<s1(x)<<'\n'; } }