Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Ответ всегда не превосходит 2
- , потому что MEX
- всей строки не больше 2
- .
- Ответ 0
- только в том случае, если нулей в строке нет совсем.
- Теперь необходимо понять, когда ответ 1
- , а когда — 2
- . Сумма MEX
- равна 1
- только в том случае, если все нули образуют один отрезок без единиц. Тогда мы его вырежем, его MEX
- равен 1
- , всё остальное — единицы, их MEX
- равен 0
- .
- Если же нули не образуют один отрезок без единиц, то найдутся два нуля, между которыми единица. Либо эти два нуля в одном отрезке, но тогда и единица с ними, то есть MEX
- равен 2
- . Либо эти два нуля в двух разных отрезках, но тогда сумма MEX
- точно не меньше 2
- .
- #include <bits/stdc++.h>
- using namespace std;
- int main() {
- int T;
- cin >> T;
- while (T --> 0) {
- string s;
- cin >> s;
- int zeroes = count(s.begin(), s.end(), '0');
- if (zeroes == 0) {
- cout << 0 << '\n';
- continue;
- }
- int first = s.find('0');
- int last = s.rfind('0');
- if (last - first + 1 == zeroes) {
- cout << 1 << '\n';
- } else {
- cout << 2 << '\n';
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment