| Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
|---|---|---|---|---|---|---|---|---|
| 320015 | xiang | 最大的和 T5 | C++ | 解答错误 | 17 MS | 880 KB | 781 | 2026-05-02 15:21:13 |
#include <iostream> #include <vector> #include <algorithm> #include <climits> using namespace std; int main() { int n, d; cin >> n >> d; vector<int> a(n), b(n); for (int i = 0; i < n; i++) cin >> a[i]; for (int i = 0; i < n; i++) cin >> b[i]; sort(b.begin(), b.end()); // 对b排序以便二分 int maxSum = INT_MIN; for (int i = 0; i < n; i++) { int low = a[i] - d; int high = a[i] + d; // 在b中找属于[low, high]的最大值 auto it = upper_bound(b.begin(), b.end(), high); if (it != b.begin()) { --it; if (*it >= low) { maxSum = max(maxSum, a[i] + *it); } } } cout << maxSum << endl; return 0; }