D. 一道十分不正经的题目

    传统题 1000ms 256MiB

一道十分不正经的题目

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

如你所见,这是一道十分不正经的题目,我们将十分不正经的考察你十分不正经的算法知识内容,题目如下:

给定 nn 个非负整数 a1,a2,…,ana_1, a_2, \ldots, a_n 和一个整数 kk (1≤k≤n)(1 \leq k \leq n)。需要找到三个最小的非负整数 x,y,zx,y,z,使得以下三个条件成立:

  1. 对于按位与,集合 Sx={ai​ & x ∣ 1≤i≤n}S_x = \{a_i​~\&~x~|~1 \leq i \leq n\} 中不同元素的个数 ≤k\leq k;
  2. 对于按位或,集合 Sy={ai​ ∥ y ∣ 1≤i≤n}S_y = \{a_i​~\|~y~|~1 \leq i \leq n\} 中不同元素的个数 ≥k\geq k;
  3. 对于按位异或,集合 Sz={ai​⊕z ∣ 1≤i≤n}S_z = \{a_i​ \oplus z~|~1 \leq i \leq n\} 中不同元素的个数 =k= k

分别给出 x,y,zx,y,z 的最小可行值,若无法满足则输出 −1-1。

按位运算:将两个数转为二进制数,对二进制表示中的每一位逐一运算。

按位与运算:0 & 0=0,0 & 0=1,1 & 0=0,1 & 1=10~\&~0 = 0,0~\&~0 = 1,1~\&~0 = 0,1~\&~1 = 1。
例:5 & 6=(101)2 & (110)2=(100)2=45~\&~6 = (101)_2~\&~(110)_2 = (100)_2 = 4。

按位或运算:0 ∥ 0=0,0 ∥ 1=1,1 ∥ 0=1,1 ∥ 1=10~\|~0 = 0,0~\|~1 = 1,1~\|~0 = 1,1~\|~1 = 1。
例:5 ∥ 6=(101)2 ∥ (110)2=(111)2=75~\|~6 = (101)_2~\|~(110)_2 = (111)_2 = 7。

按位异或运算:$0 \oplus 0 = 0,0 \oplus 1 = 1,1 \oplus 0 = 1,1 \oplus 1 = 0$。
例:5⊕6=(101)2⊕(110)2=(011)2=35 \oplus 6 = (101)_2 \oplus (110)_2 = (011)_2 = 3。

输入格式

第一行包含两个整数 n,kn, k (1≤k≤n≤2×105)(1 \leq k \leq n \leq 2 \times 10^5)。

第二行包含 nn 个整数 aia_i (0≤ai<230)(0 \leq a_i < 2^{30})。

输出格式

如果有解,输出一行三个整数,分别代表 x,y,zx,y,z 的最小可行值;如果无解,输出 −1-1。

3 5
1 2 3
0 -1 -1
3 1
1 1 1
0 0 0

说明

对于样例 11,按题意分别尝试可以发现:

对按位与操作,可行的最小值为 00;对按位或和按位异或操作,均无法找到满足条件的值,因此输出 −1-1。

福建师范大学第29届低年级程序设计竞赛(热身赛,重现赛)

未参加
状态
已结束
规则
XCPC
题目
6
开始于
2025-12-8 14:30
结束于
2026-9-26 5:30
持续时间
6999 小时
主持人
参赛人数
10