Advertisement
Salman_CUET_18

Motarack's Birthday(Ashisgup)

Jun 26th, 2020
1,605
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define IOS ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
  5. #define endl "\n"
  6. #define int long long
  7.  
  8. const int N = 1e5 + 5;
  9.  
  10. int n, k;
  11. int a[N];
  12.  
  13. bool check(int x)
  14. {
  15.     int mn = 0, mx = 2e9;
  16.     for(int i = 1; i <= n; i++)
  17.     {
  18.         if(a[i] != -1)
  19.             continue;
  20.         if(i - 1 >= 1 && a[i - 1] != -1)
  21.         {
  22.             mn = max(mn, a[i - 1] - x);
  23.             mx = min(mx, a[i - 1] + x);
  24.         }
  25.         if(i + 1 <= n && a[i + 1] != -1)
  26.         {
  27.             mn = max(mn, a[i + 1] - x);
  28.             mx = min(mx, a[i + 1] + x);
  29.         }
  30.     }
  31.     if(mn <= mx)
  32.         k = mn;
  33.     return mn <= mx;
  34. }
  35.  
  36. int binsearch(int lo, int hi)
  37. {
  38.     while(lo < hi)
  39.     {
  40.         int mid = (lo + hi) / 2;
  41.         if(check(mid))
  42.             hi = mid;
  43.         else
  44.             lo = mid + 1;
  45.     }
  46.     check(lo);
  47.     return lo;
  48. }
  49.  
  50. int32_t main()
  51. {
  52.     IOS;
  53.     int t;
  54.     cin >> t;
  55.     while(t--)
  56.     {
  57.         cin >> n;
  58.         for(int i = 1; i <= n; i++)
  59.             cin >> a[i];
  60.         int mn = 0;
  61.         for(int i = 1; i + 1 <= n; i++)
  62.         {
  63.             if(a[i] != -1 && a[i + 1] != -1)
  64.                 mn = max(mn, abs(a[i + 1] - a[i]));
  65.         }
  66.         int m = binsearch(mn, 2e9);
  67.         cout << m << " " << k << endl;
  68.     }
  69.     return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement