1 条题解
-
0
C++ :
#include <cstdio> #include <algorithm> using namespace std; static long long a[100005]; int main(){ int n; if(scanf("%d", &n) != 1) return 0; for(int i = 0; i < n; i++) scanf("%lld", &a[i]); sort(a, a + n); int m; if(scanf("%d", &m) != 1) return 0; while(m--){ long long x; scanf("%lld", &x); int p = (int)(lower_bound(a, a + n, x) - a); /* 第一个 >= x 的下标 */ long long best; if(p == 0) best = a[0]; else if(p == n) best = a[n - 1]; else { long long lo = a[p - 1], hi = a[p]; best = (x - lo <= hi - x) ? lo : hi; /* 距离相同取较小 */ } printf("%lld\n", best); } return 0; }
- 1
信息
- ID
- 2695
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者