Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
Ответ всегда не превосходит 2 , потому что MEX всей строки не больше 2 . Ответ 0 только в том случае, если нулей в строке нет совсем. Теперь необходимо понять, когда ответ 1 , а когда — 2 . Сумма MEX равна 1 только в том случае, если все нули образуют один отрезок без единиц. Тогда мы его вырежем, его MEX равен 1 , всё остальное — единицы, их MEX равен 0 . Если же нули не образуют один отрезок без единиц, то найдутся два нуля, между которыми единица. Либо эти два нуля в одном отрезке, но тогда и единица с ними, то есть MEX равен 2 . Либо эти два нуля в двух разных отрезках, но тогда сумма MEX точно не меньше 2 . #include
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; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)