Thử thách nhị phân

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1100 Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Nay ngày của các mỹ nhân
Chàng được cho dãy nhị phân dài \(n\)
Chàng ngồi chàng đảo hàng giờ
Lấy dãy toàn 1 làm thơ tặng nàng
Vì chàng vốn rất yêu nàng
Dãy càng nhiều 1, thơ càng thêm sang
Nhờ thí sinh đảo giúp chàng
Cho nhiều số 1 để chàng tặng em

Yêu cầu: Cho một xâu nhị phân độ dài \(n\), hãy giúp chàng trai chọn một đoạn liên tiếp của xâu và đảo ngược các kí tự trong đoạn đó (0 thành 1, 1 thành 0) để sau cùng xâu có nhiều kí tự 1 nhất.

Input

  • Dòng đầu tiên gồm một số nguyên dương \(n\).
  • Dòng thứ hai gồm một xâu nhị phân độ dài \(n\).

Output

  • Gồm một số nguyên duy nhất là số kí tự 1 nhiều nhất có thể sau khi thực hiện một lần đảo ngược một đoạn liên tiếp.

Scoring

  • Subtask 1 (\(50\%\) số điểm): \(n \leq 1000\).
  • Subtask 2 (\(50\%\) số điểm): \(n \leq 10^5\).

Example

Test 1

Input
5
10101
Output
4
Note

Chọn đoạn liên tiếp từ vị trí \(2\) đến vị trí \(4\) ta được xâu 11011.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: