CF1553H.XOR and Distance

省选/NOI-

通过率:0%

时间限制:3.00s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given an array aa consisting of nn distinct elements and an integer kk. Each element in the array is a non-negative integer not exceeding 2k−12^k-1.

Let's define the XOR distance for a number xx as the value of

f(x)=minlimits_i=1nminlimits_j=i+1n∣(a_ioplusx)−(a_joplusx)∣,f(x) = \\min\\limits\_{i = 1}^{n} \\min\\limits\_{j = i + 1}^{n} |(a\_i \\oplus x) - (a\_j \\oplus x)|,

where ⊕\oplus denotes the bitwise XOR operation.

For every integer xx from 00 to 2k−12^k-1, you have to calculate f(x)f(x).

给你一个由 nn 个互不相同元素组成的数组 aa 和一个整数 kk。数组中每个元素均为不超过 2k−12^k-1 的非负整数。

我们定义一个数 xx 的异或距离为如下值:

f(x)=min⁡i=1nmin⁡j=i+1n∣(ai⊕x)−(aj⊕x)∣,f(x) = \min\limits_{i = 1}^{n} \min\limits_{j = i + 1}^{n} |(a_i \oplus x) - (a_j \oplus x)|,

其中 ⊕\oplus 表示按位异或运算。

你需要对每个从 00 到 2k−12^k-1 的整数 xx,计算出 f(x)f(x)。

输入格式

The first line contains two integers nn and kk (1≤k≤191 \le k \le 19; 2≤n≤2k2 \le n \le 2^k).

The second line contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n (0≤ai≤2k−10 \le a_i \le 2^k-1). All these integers are distinct.

第一行包含两个整数 nn 和 kk(1≤k≤191 \le k \le 19;2≤n≤2k2 \le n \le 2^k)。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(0≤ai≤2k−10 \le a_i \le 2^k-1)。这些整数互不相同。

输出格式

Print 2k2^k integers. The ii-th of them should be equal to f(i−1)f(i-1).

输出 2k2^k 个整数。其中第 ii 个整数应等于 f(i−1)f(i-1)。

输入输出样例

  • 输入#1

    3 3
    6 0 3

    输出#1

    3 1 1 2 2 1 1 3
  • 输入#2

    3 4
    13 4 2

    输出#2

    2 2 6 6 3 1 2 2 2 2 1 3 6 6 2 2

说明/提示

Consider the first example:

  • for x=0x = 0, if we apply bitwise XOR to the elements of the array with xx, we get the array [6,0,3][6, 0, 3], and the minimum absolute difference of two elements is 33;
  • for x=1x = 1, if we apply bitwise XOR to the elements of the array with xx, we get the array [7,1,2][7, 1, 2], and the minimum absolute difference of two elements is 11;
  • for x=2x = 2, if we apply bitwise XOR to the elements of the array with xx, we get the array [4,2,1][4, 2, 1], and the minimum absolute difference of two elements is 11;
  • for x=3x = 3, if we apply bitwise XOR to the elements of the array with xx, we get the array [5,3,0][5, 3, 0], and the minimum absolute difference of two elements is 22;
  • for x=4x = 4, if we apply bitwise XOR to the elements of the array with xx, we get the array [2,4,7][2, 4, 7], and the minimum absolute difference of two elements is 22;
  • for x=5x = 5, if we apply bitwise XOR to the elements of the array with xx, we get the array [3,5,6][3, 5, 6], and the minimum absolute difference of two elements is 11;
  • for x=6x = 6, if we apply bitwise XOR to the elements of the array with xx, we get the array [0,6,5][0, 6, 5], and the minimum absolute difference of two elements is 11;
  • for x=7x = 7, if we apply bitwise XOR to the elements of the array with xx, we get the array [1,7,4][1, 7, 4], and the minimum absolute difference of two elements is 33.

考虑第一个例子:

  • 当 x=0x = 0 时,将数组中各元素与 xx 进行按位异或运算,得到数组 [6,0,3][6, 0, 3],其中任意两元素的最小绝对差值为 33;
  • 当 x=1x = 1 时,将数组中各元素与 xx 进行按位异或运算,得到数组 [7,1,2][7, 1, 2],其中任意两元素的最小绝对差值为 11;
  • 当 x=2x = 2 时,将数组中各元素与 xx 进行按位异或运算,得到数组 [4,2,1][4, 2, 1],其中任意两元素的最小绝对差值为 11;
  • 当 x=3x = 3 时,将数组中各元素与 xx 进行按位异或运算,得到数组 [5,3,0][5, 3, 0],其中任意两元素的最小绝对差值为 22;
  • 当 x=4x = 4 时,将数组中各元素与 xx 进行按位异或运算,得到数组 [2,4,7][2, 4, 7],其中任意两元素的最小绝对差值为 22;
  • 当 x=5x = 5 时,将数组中各元素与 xx 进行按位异或运算,得到数组 [3,5,6][3, 5, 6],其中任意两元素的最小绝对差值为 11;
  • 当 x=6x = 6 时,将数组中各元素与 xx 进行按位异或运算,得到数组 [0,6,5][0, 6, 5],其中任意两元素的最小绝对差值为 11;
  • 当 x=7x = 7 时,将数组中各元素与 xx 进行按位异或运算,得到数组 [1,7,4][1, 7, 4],其中任意两元素的最小绝对差值为 33。

输入解题思路,AI测评打分。不知道怎么写?

首页