fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int n, k, p;
  5. vector<int> a;
  6. vector<int> b;
  7.  
  8. bool isPossible(long long T) {
  9. int j = 0;
  10. for (int i = 0; i < n; ++i) {
  11. while (j < k && (abs(a[i] - b[j]) + abs(b[j] - p) > T)) {
  12. ++j;
  13. }
  14. if (j >= k) return false;
  15. ++j;
  16. }
  17. return true;
  18. }
  19.  
  20. int main() {
  21.  
  22. cin >> n >> k >> p;
  23. a.resize(n);
  24. b.resize(k);
  25. for (int i = 0; i < n; ++i) cin >> a[i];
  26. for (int i = 0; i < k; ++i) cin >> b[i];
  27.  
  28. sort(a.begin(), a.end());
  29. sort(b.begin(), b.end());
  30.  
  31. long long left = 0, right = 2e14, ans = 2e14;
  32. while (left <= right) {
  33. long long mid = (left + right) / 2;
  34. if (isPossible(mid)) {
  35. ans = mid;
  36. right = mid - 1;
  37. } else {
  38. left = mid + 1;
  39. }
  40. }
  41.  
  42. cout << ans << endl;
  43.  
  44. return 0;
  45. }
  46.  
Success #stdin #stdout 0.01s 5300KB
stdin
Standard input is empty
stdout
0