K - Or Set Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 500

問題文

正整数 M と、長さ N の非負整数列 A=(A_1,A_2,\dots ,A_N) が与えられます。ここで、0 \leq A_i \leq 2^M-1 が保証されます。また、最初 X=0 である整数 X があります。

あなたは、 A の要素を自由に並べ替えた後、以下の操作を i=1,2,\ldots,N の順で行います。

  • X \ \mathrm{or} \ A_i \neq 2^M-1 ならば、 XX \ \mathrm{or} \ A_i に置き換える。

操作後の X としてありうるものの個数を求めてください。

\mathrm{or} とは 整数 a,b のビットごとの論理和 a \ \mathrm{or} \ b は以下のように定義されます。
  • a \ \mathrm{or} \ b を二進表記したときの 2^k \ (0 \leq k) の位の数は、a,b をを二進表記したときの 2^k の位の数のうち 1 であるものが存在するのであれば 1、そうでなければ 0 である。
例えば、12 \ \mathrm{or} \ 6=14 となります。(二進表記すると 1100 \ \mathrm{or} \ 0110=1110 )

制約

  • 1 \leq N \leq 2\times 10^5
  • 1 \le M \le 30
  • 0 \le A_i < 2^M
  • 入力は全て整数

入力

入力は以下の形式で標準入力から与えられる。

N M
A_1 A_2 \ldots A_N

出力

答えを出力せよ。


入力例 1

3 3
4 3 6

出力例 1

2

操作後の X として考えられるものは、3,62 通りです。

例えば 、A=(4,3,6) の場合、操作は以下のようにして行われます。

  • X \ \mathrm{or} \ A_1 = 0 \ \mathrm{or} \ 4 = 4 ≠ 2^3-1 なので、X4 で置き換える。
  • X \ \mathrm{or} \ A_2 = 4 \ \mathrm{or} \ 3 = 7 = 2^3-1 なので、操作を行わない。
  • X \ \mathrm{or} \ A_3= 4 \ \mathrm{or} \ 6 = 6 ≠ 2^3-1 なので、X6 で置き換える。

よって、最終的な X の値は 6 となります。


入力例 2

5 1
1 1 1 1 1

出力例 2

1

入力例 3

8 4
3 5 14 0 10 3 6 12

出力例 3

4