Zoznam úloh

2. Ešte čakajte

Kolo už skončilo. Môžeš si pozrieť vzorové riešenie.

Predstavte si typický deň vo firme Kódíme S Prestávkami. Je 10:50 a všetci hladní programátori sa pýtajú jedinú otázku: “Kedy bude obed?”

V tejto firme však nechodia na obed len tak hala-bala. Na veľkej obrazovke v kuchynke svieti dlhý reťazec núl a jednotiek, ktorý určuje čo sa práve deje:

  • Blok núl: “Obed sa ešte pripravuje.”

  • Blok jednotiek: “Obed je hotový, môžete ísť.”

Samozrejme, signál musí byť vždy pekne v poradí – najprv všetky nuly, potom všetky jednotky.

No ako to už býva, systém sa občas pokazí. Namiesto pekného prechodu z núl na jednotky sa na obrazovke objaví niečo takéto:

`0101110010`

Výsledkom je panika na chodbe. Máme ísť na obed? Ešte počkať? Máme si objednať pizzu?

Programátori si však vedia poradiť. Predpokladajú, že sa v signáli stalo čo najmenej chýb, a tak sa snažia zistiť, koľko čisel by stačilo zmeniť, aby sa signál opravil a všetci konečne vedeli, čo majú robiť.

Úloha

Dostanete reťazec tvorený nulami a jednotkami. Zistite, koľko najmenej čísel treba v zadanom reťazci zmeniť tak, aby sa z neho stal signál tvaru: 000…111 Teda aby ste dostali reťazec tvorený súvislým blokom núl a potom súvislým blokom jednotiek, pričom oba súvislé bloky musia mať dĺžku aspoň 1.

Formát vstupu

Na prvom riadku vstupu je číslo $n$ ($2 \leq n \leq 10^6$) udávajúce dĺžku reťazca. V druhom riadku sa nachádza reťazec tvorený $n$ znakmi len 0 alebo 1.

V jednotlivých sadách platia nasledujúce obmedzenia:

Sada 1 2 3 4
$2 \leq n \leq$ $15$ $1000$ $10^5$ $10^6$

Formát výstupu

Vypíš jeden riadok a v ňom jedno celé číslo udávajúce najmenší počet zmien, ktoré musíme spraviť, aby sme sa dostali do požadovaného stavu.

Príklad

Input:

7
0101101

Output:

2

Môžeme zameniť nuly na tretej a šiestej pozícii za jednotky, vznikne nám reťazec 0111111. Alebo môžeme zmeniť jednotku na druhej pozícii a nulu na šiestej pozícii. Vtedy vznikne reťazec 0001111.

Input:

5
00000

Output:

1

Reťazec má obsahovať súvislý blok núl aj jednotiek, preto potrebujeme urobiť jednu zmenu - pridať na koniec reťazca jednotku. Vznikne nám tak reťazec 00001.

Pre odovzdávanie sa musíš prihlásiť.
Trojsten

Korešpondenčný seminár z programovania zastrešuje občianske združenie Trojsten.

Kontakt
Ďalšie projekty