inno

Time limit: 0.2s Memory limit: 64MB Input: inno.in Output: inno.out

Se dau numerele naturale NN și KK, precum și un șir a1a_1, a2a_2, \dots, aNa_N de numere naturale nenule. Din șir se poate elimina o singură secvență (eventual vidă) aia_i, ai+1a_{i + 1}, \dots, aja_j astfel că în șir rămân elementele a1a_1, a2a_2, \dots, ai1a_{i − 1}, aj+1a_{j + 1}, \dots, aNa_N. De exemplu, din șirul aa = [11, 22, 33, 44, 55, 77] se poate elimina secvența 33, 44, 55 și rămâne 11, 22, 77; sau se poate elimina secvența vidă și rămâne șirul inițial 11, 22, 33, 44, 55, 77; sau se poate elimina 11, 22, 33, 44 și rămâne șirul 55, 77.

După eliminarea secvenței, elementele rămase formează un șir inno dacă aplicându-se operația & pe biți asupra lor, rezultatul este un număr care are cel puțin KK biți de 11 în baza 22. De exemplu, dacă aa = (11, 22, 33, 44, 55, 77) și K=2K = 2, atunci prin eliminarea secvenței 11, 22, 33, 44 rămân elementele 55, 77, iar 55 & 77 = 55, care are 22 biți de 11 în baza 22. Dar dacă se elimină secvența 33, 44, 55 atunci rămân elementele 11, 22, 77, iar 11 & 22 & 77 = 00, deci nu este șir inno.

Cerință

Să se determine în câte moduri se poate elimina o secvență astfel încât elementele rămase să formeze șir inno.

Date de intrare

Fișierul de intrare inno.in conține pe prima linie numerele naturale NN și KK. Pe linia a doua se află NN numere naturale reprezentând elementele șirului, separate prin câte un spațiu.

Date de ieșire

Fișierul de ieșire inno.out va conține pe prima linie un singur număr natural reprezentând numărul de moduri de a elimina o secvență astfel încât șirul rămas să fie inno.

Restricții și precizări

  • 3N200 0003 \leq N \leq 200 \ 000
  • 1K291 \leq K \leq 29
  • 0ai23110 \leq a_i \leq 2^{31} − 1
  • & este operatorul de conjuncție pe biți. Dacă xx și yy sunt valori binare, atunci expresia xx & yy este egală cu 11 dacă și numai dacă x=1x = 1 și y=1y = 1. Deci 11 & 11 = 11, 00 & 11 = 00, 11 & 00 = 00, 00 & 00 = 00. Dacă aa și bb sunt numere naturale, atunci expresia aa & bb se efectuează la nivelul reprezentării în baza 22. De exemplu, dacă a=12a = 12 și b=20b = 20, atunci: aa & bb = 1212 & 2020 = 01100201100_{2} & 10100210100_{2} = 00100200100_{2} = 4104_{10}
  • Pentru teste în valoare de 1212 puncte: 1K21 \leq K \leq 2 și 3N253 \leq N \leq 25
  • Pentru alte teste în valoare de 2323 de puncte: 500N8 000500 \leq N \leq 8 \ 000
  • Pentru alte teste în valoare de 6565 de puncte: Nu există restricții suplimentare.

Exemplul 1

inno.in

4 2
10 7 5 15

inno.out

5

Explicație

Pentru primul exemplu modalitățile sunt:

  • se elimină 1010 și rămâne șirul 77, 55, 1515, iar 77 & 55 & 1515 = 55, care are 22 biți de 11
  • se elimină 1010, 77 și rămâne șirul 55, 1515, iar 55 & 1515 = 55, care are 22 biți de 11
  • se elimină 1010, 77, 55 și rămâne șirul 1515, iar 1515 are 44 biți de 11
  • se elimină 77, 55 și rămâne șirul 1010, 1515, iar 1010 & 1515 = 1010 are 2 biți de 11
  • se elimină 77, 55, 1515 și rămâne șirul 1010, iar 1010 are 22 biți de 11

Exemplul 2

inno.in

5 4
7 7 6 1 62

inno.out

1

Explicație

Pentru cel de-al doilea exemplu singura posibilitate este eliminarea secvenței 7 7 6 17 \ 7 \ 6 \ 1. Rămâne doar numărul 6262, care are 55 biți de 11.

Log in or sign up to be able to send submissions!