Advertisement
he_obviously

Untitled

May 19th, 2020
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <cmath>
  4. #include <algorithm>
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9.     ios_base::sync_with_stdio(0);
  10.     cin.tie(0); cout.tie(0);
  11.     int n, m;
  12.     cin >> n >> m;
  13.     vector <int> a(n);
  14.     for (int i = 0; i < n; ++i) {
  15.         cin >> a[i];
  16.     }
  17.     int left = -1, right = m;
  18.     while (right - left > 1) {
  19.         int mid = (right + left) / 2;
  20.         bool ok = true;
  21.         vector <int> b(n);
  22.         for (int i = 0; i < n; ++i) b[i] = a[i];
  23.         if (b[0] == 0 || (b[0] + mid) % m >= 0) {
  24.             b[0] = 0;
  25.         }
  26.         for (int i = 1; i < n; ++i) {
  27.             if (b[i] == b[i - 1]) {
  28.                 continue;
  29.             }
  30.             else if (b[i] > b[i - 1]) {
  31.                 if (b[i] + mid >= m && (b[i] + mid) % m >= b[i - 1]) {
  32.                     b[i] = b[i - 1];
  33.                 }
  34.             }
  35.             else {
  36.                 if (b[i - 1] - b[i] > mid) {
  37.                     ok = false;
  38.                     break;
  39.                 }
  40.                 else {
  41.                     b[i] = b[i - 1];
  42.                 }
  43.             }
  44.         }
  45.         if (ok) right = mid;
  46.         else left = mid;
  47.     }
  48.     cout << right << "\n";
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement