MesterBit

Publicat de: popa.bogdannnn
Memorie: 128.0MB/128.0MB
Timp de execuție: 0.6s
Operații IO: stdin/stdout

Cerință

La cursul tornadei, Meșter a scris pe caiet $N$ valori $a_1$, $a_2$, …, $a_N$ și a anunțat că va meșteri laptop-urile tuturor celor care nu rezolvă următoarea problemă folosind map int, bitset.

Se definește mulțimea $M$ astfel: Pentru fiecare $l$ și $r$ cu $1 \le l \le r \le N$, se calculează $\texttt{OR}_{l,r} = a_l | a_{l+1} | \dots | a_{r}$ și se adaugă în mulțimea $M$. Câte valori distincte conține mulțimea $M$?

În această problemă, operatorul “|” reprezintă operația de SAU pe biți.

Date de intrare

Pe prima linie se va afla un număr $N$, numărul de valori de pe caietul meșterului. Pe a doua linie se vor afla $N$ numere $a_1$, $a_2$, …, $a_N$, cele $N$ valori.

Date de ieșire

Pe prima linie se va afișa numărul de elemente distincte ale mulțimii $M$.

Restricții și precizări

  • $1 \leq N \leq 10^6$
  • $0 \leq a_i \leq N, \forall 1 \leq i \leq N$
  • Pentru 25 de puncte: $1 \leq N \leq 1000$
  • Pentru 45 de pucnte: $1 \leq N \leq 10^5$

Exemple

Intrare

5
6 3 4 2 5

Ieșire

6