提交时间:2026-05-02 15:21:13

运行 ID: 320015

#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; }