nq1s788

MIN-MEX разрез

Nov 2nd, 2025
610
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.59 KB | None | 0 0
  1. Ответ всегда не превосходит 2
  2. , потому что MEX
  3.  всей строки не больше 2
  4. .
  5.  
  6. Ответ 0
  7.  только в том случае, если нулей в строке нет совсем.
  8.  
  9. Теперь необходимо понять, когда ответ 1
  10. , а когда — 2
  11. . Сумма MEX
  12.  равна 1
  13.  только в том случае, если все нули образуют один отрезок без единиц. Тогда мы его вырежем, его MEX
  14.  равен 1
  15. , всё остальное — единицы, их MEX
  16.  равен 0
  17. .
  18.  
  19. Если же нули не образуют один отрезок без единиц, то найдутся два нуля, между которыми единица. Либо эти два нуля в одном отрезке, но тогда и единица с ними, то есть MEX
  20.  равен 2
  21. . Либо эти два нуля в двух разных отрезках, но тогда сумма MEX
  22.  точно не меньше 2
  23. .
  24.  
  25. #include <bits/stdc++.h>
  26. using namespace std;
  27.  
  28. int main() {
  29.     int T;
  30.     cin >> T;
  31.     while (T --> 0) {
  32.         string s;
  33.         cin >> s;
  34.         int zeroes = count(s.begin(), s.end(), '0');
  35.         if (zeroes == 0) {
  36.             cout << 0 << '\n';
  37.             continue;
  38.         }
  39.         int first = s.find('0');
  40.         int last = s.rfind('0');
  41.         if (last - first + 1 == zeroes) {
  42.             cout << 1 << '\n';
  43.         } else {
  44.             cout << 2 << '\n';
  45.         }
  46.     }
  47.     return 0;
  48. }
Advertisement
Add Comment
Please, Sign In to add comment