1 条题解
-
0
手工二分:
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N]; int main() { int n;scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); a[0]=-2e9; a[++n]=2e9; int q;scanf("%d",&q); while(q--) { int x;scanf("%d",&x); int l=1,r=n+1; while(l+1<r) { int mid=(l+r)>>1; if(a[mid]<=x)l=mid; else r=mid; } if(x-a[l]<=a[l+1]-x)printf("%d\n",a[l]);else printf("%d\n",a[l+1]); } return 0; }STL二分:
#include<bits/stdc++.h> using namespace std; const int N=1e5+10; int a[N]; int main() { int n;scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); a[0]=-2e9; a[++n]=2e9; int q;scanf("%d",&q); while(q--) { int x;scanf("%d",&x); int p=lower_bound(a,a+n+1,x)-a; if(x-a[p-1]<=a[p]-x)printf("%d\n",a[p-1]);else printf("%d\n",a[p]); } return 0; }
- 1
信息
- ID
- 279
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 7
- 标签
- 递交数
- 561
- 已通过
- 121
- 上传者