Advertisement
Ankit_132

F

Mar 11th, 2024
897
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.29 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. #define ll     long long
  6. #define _test   int _TEST; cin>>_TEST; while(_TEST--)
  7. #define ff     first
  8. #define ss     second
  9. #define pb     push_back
  10.  
  11. int main()
  12. {
  13.     _test
  14.     {
  15.         int n, m, k;
  16.         cin >> n >> m >> k;
  17.         vector<int>a(n), b(m), c(k);
  18.    
  19.         for (int i = 0; i < n; i++)cin >> a[i];
  20.         for (int i = 0; i < m; i++)cin >> b[i];
  21.         for (int i = 0; i < k; i++)cin >> c[i];
  22.        
  23.         vector<array<int, 2>>d(n - 1);
  24.    
  25.         for (int i =0; i<n-1; i++)
  26.         {
  27.             d[i][0] = a[i + 1] - a[i];
  28.             d[i][1] = i;
  29.         }
  30.    
  31.         sort(d.rbegin(), d.rend());
  32.         sort(b.begin(), b.end());
  33.         sort(c.begin(), c.end());
  34.    
  35.         int res1 = d[0][0], res2 = 0;
  36.         int id = d[0][1];
  37.         if (n > 2)
  38.            res2 = d[1][0];
  39.        
  40.         int res = res1;
  41.         for (int i = 0; i < m; i++)
  42.         {
  43.             int l = a[id], r = a[id + 1];
  44.             int mid = ((ll)l + r) / 2;
  45.             int t = lower_bound(c.begin(), c.end(), mid - b[i]) - c.begin();
  46.             for (int j = max(0, t - 3); j <= min(k - 1, t + 3); j++)
  47.             {
  48.                 if (b[i] + c[j] >= l && b[i] + c[j] <= r)
  49.                     res = min(res, max(b[i] + c[j] - a[id], a[id+1] - b[i] - c[j]));       
  50.             }
  51.         }
  52.    
  53.         cout << max(res, res2)<<'\n';
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement