Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Neutralizacja
(neutralizacja)
Limit pamięci: 512 MB
Limit czasu: 1.00 s

Największy fizyk Bitocji, Bajtocjusz Maksimus, dokonał przełomowego odkrycia dwóch, wcześniej nieznanych cząsteczek: zerum i jedynkum. Cząsteczki zachowują się w zaskakujący sposób: jeżeli zerum znajduje się blisko jedynkum, to Bitocjusz może poruszyć te cząsteczki tak, aby zbliżyły się do siebie i anihilowały (innymi słowy, przestają istnieć i zupełnie znikają), pozostawiając po sobie dziurę, ściągającą pozostałe cząsteczki. Przykładowo, jeżeli Bajtocjusz ustawi obok siebie cząsteczki zerum i jedynkum w następujący sposób 0010011 (gdzie 0 reprezentuje cząsteczkę zerum, a 1 cząsteczkę jedynkum) oraz poruszy drugą i trzecią cząsteczkę, to te anihilują się i ciąg cząsteczek zmieni się w 00011. Bitocjusz mógłby teraz powtórzyć tę procedurę, aż żadne dwie cząsteczki zerum i jedynkum nie będą znajdowały się obok siebie.

Bitocjusz jest bardzo zajętym fizykiem, dlatego poprosił Cię o pomoc. Fizyk ustawił w ciąg kolejne cząsteczki i zastanawia się, ile maksymalnie razy może poruszyć pewną parę sąsiadujących zerum i jedynkum? Pomóż mu i napisz program, który rozstrzyga ten problem.

Wejście

W pierwszym wierszu wejścia znajduje się jedna liczba naturalna N oznaczająca liczbę cząsteczek. W następnym wierszu znajduje się ciąg N znaków 0 lub 1, reprezentujących ciąg cząsteczek ustawiony przez Bitocjusza.

Wyjście

W jednym wierszu wyjścia należy wypisać jedną liczbę całkowitą, oznaczającą maksymalną liczbę razy, jaką Bitocjusz może dokonać anihilacji pewnych dwóch sąsiadujących cząsteczek.

Ograniczenia

1 ≤ N ≤ 1 000 000.

Podzadania

Podzadanie Warunki Punkty
1 N ≤ 3 000. 26
2 Wszystkie zera znajdują się na lewo od wszystkich jedynek. 18
5 Brak dodatkowych ograniczeń. 56

Przykład

Wejście Wyjście Wyjaśnienie
5
01100
2

Istnieje wiele możliwych kolejności anihilacji, jednakże w maksymalna liczba anihilacji, jaką można dokonać to dwie, przykładowo wybierając pierwsze 0 oraz 1 i otrzymując ciąg 100, a następnie pierwsze 1 i 0, zostając z jednym 0.

Wejście Wyjście
2
00
0