Editorial for Hakerisanje
Submitting an official solution before solving the problem yourself is a bannable offence.
Podzadatak 1
U prvom podzadatku, za svaki upit prođemo kroz podniz za koji se traži odgovor i izvršimo bitovsku konjunkciju svih elemenata. Vremenska složenost je .
Podzadatak 2
U drugom podzadatku u nizu su samo jedinice i nule. Primetimo da je odgovor na upit ili ili
. U ovom podzadatku napravimo prefiksne sume, tj. proverimo koliko puta se pojavljuje
do nekog indeksa
. Neka je ovaj broj
. Uslov da odgovor bude
je da između indeksa
i
budu sve jedinice, tj. da važi
. Vremenska složenost je
.
Podzadatak 3 (kompletno rešenje)
Za kompletno rešenje neophodno je da zamislimo naše brojeve u binarnom sistemu i da primetimo da bitove ovde možemo da posmatramo nezavisno. Sada radimo sličan postupak kao i u prethodnom podzadatku, za svaki bit , nađemo u koliko brojeva do indeksa
je on
. Neka je ovaj broj
. Da bi taj bit bio
kada izvršimo konjunkciju svih elemenata, potrebno je da važi
. Tada je odgovor na upit od
do
jednak
, za sve
za koje važi
. Vremenska složenost je
.
Comments