Z tohto problému sa naučíme populárny programovací trik používaný v mnohých variantoch štatistických výpočtov.
Predstavte si, že nejaký horár chce spočítať borovice, jedle a brezy nejakej časti lesa. Môže ísť cez túto časť lesa trikrát, pričom bude počítať iba borovice pri prvom prechode, jedle pri druhom a pri treťom iba brezy
Efektívnejší spôsob by bolo prejsť cez les iba raz a pre každý strom pridať jednu bodku do troch stránok v jeho zošite - prvá strana pre borovice, ďalšia pre jedle a posledná pre brezy. To je myšlienka počítania podobných prvkov v poradí pomocou poľa počítadiel (namiesto zošita).
Tu je pole s dĺžkou M
s číslami od 1
po N
, kde N
je menšie alebo rovné 20
.
Prejdeme cez pole, a spočítame koľkokrát sa tam každé číslo vyskytuje.
T.j niečo podobné ako úloha počítanie samohlások , akurát potrebujeme viac ako jedno počítadlo.
Uistite sa, že máte samostatné pole, aby ste nevytvárali veľa oddelených premenných pre každé počítadlo.
Vstupné dáta obsahuje M
a N
v prvom riadku.
Druhý (pomerne dlhší) riadok obsahuje hodnoty M
oddelené medzerami.
Odpoveď by mala obsahovať presne N
hodnôt, oddelené medzerami. Prvá by mala byť počet jednotiek
,
druhá počet - dvojok
a tak ďalej.
Príklad:
vstupné dáta:
10 3
3 2 1 2 3 1 1 1 1 3
odpoveď:
5 2 3