Advertisement
tien_noob

ANTSORT

Feb 4th, 2021 (edited)
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. #include <set>
  2. #include <cmath>
  3. #include <iostream>
  4. #include <vector>
  5. #include <algorithm>
  6. #include <cstdio>
  7. #include <numeric>
  8. #include <string>
  9. #include <climits>
  10. #include <stack>
  11. #include <queue>
  12. using namespace std;
  13. const int N = 3e5;
  14. long long a[N+1], b[N+1], n;
  15. void read()
  16. {
  17.     cin >> n;
  18.     for (int i = 1; i <= n; ++ i)
  19.     {
  20.         cin >> a[i];
  21.     }
  22. }
  23. bool check(long long x)
  24. {
  25.     for (int i = 1; i <= n; ++ i)
  26.     {
  27.         b[i] = a[i];
  28.         if (i == 1)
  29.         {
  30.             b[i] -= x;
  31.         }
  32.         else
  33.         {
  34.             if (a[i] < b[i-1])
  35.             {
  36.                 b[i] = min(b[i-1] + 1, b[i] + x);
  37.             }
  38.             else if (b[i-1] + 1 <= b[i] + x)
  39.             {
  40.                 b[i] = max(b[i-1] + 1, b[i] - x);
  41.             }
  42.             if (b[i-1] >= b[i])
  43.             {
  44.                 return false;
  45.             }
  46.         }
  47.     }
  48.     return true;
  49. }
  50. void solve()
  51. {
  52.     long long low = 1, high = 1e18;
  53.     while (low <= high)
  54.     {
  55.         long long mid = (low + high)/2;
  56.         if (check(mid))
  57.         {
  58.             high = mid - 1;
  59.         }
  60.         else
  61.         {
  62.            low = mid + 1;
  63.         }
  64.     }
  65.     if (n == 1)
  66.     {
  67.         cout << 0 << '\n'<<a[1]; return ;
  68.     }
  69.     cout << low << '\n';
  70.     check(low);
  71.     for (int i = 1; i <= n; ++ i)
  72.     {
  73.         cout << b[i] <<' ';
  74.     }
  75. }
  76. int main()
  77. {
  78.    ios_base::sync_with_stdio(false);
  79.    cin.tie(nullptr);
  80.    read();
  81.    solve();
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement