时空限制
2S/512M
题目描述
给定整数 X 和一个长度为 n 的整数数组 A,对于 1∼n 的每个 i 求有多少个 j 同时满足以下三个条件:
这里的 ⊕ 表示按位异或运算。
popcount(V) 表示求 V 在二进制下 1 的数量,例如:popcount(7)=3,popcount(16)=1,popcount(0)=0。
格式
输入格式
第一行包含两个整数 n 和 X,分别表示数组 A 的长度和 Ai⊕Aj 需要大于的值。
第二行包含 n 个整数 Ai。
输出格式
输出一行包含 n 个整数,第 i 个整数表示有多少个 j 同时满足三个条件。
样例
样例输入 #1
6 4
3 4 7 6 8 3
样例输出 #1
1 2 0 1 1 0
样例解释 #1
对于 i=1,popcount(A1)=2,有一个 j 满足条件:A1⊕A4=5 且 popcount(A4)=2。
对于 i=2,popcount(A2)=1,有两个 j 满足条件:A2⊕A5=12 且 popcount(A5)=1,A2⊕A6=7 且 popcount(A6)=2。
对于 i=3,popcount(A3)=3,有零个 j 满足条件。
对于 i=4,popcount(A4)=2,有一个 j 满足条件:A4⊕A6=5 且 popcount(A6)=2。
对于 i=5,popcount(A5)=1,有一个 j 满足条件:A5⊕A6=11 且 popcount(A6)=2。
对于 i=6,popcount(A6)=2,有零个 j 满足条件。
数据规模
对于 20% 的数据,n≤1000。
另有 30% 的数据,X,Ai≤1000。
对于 100% 的数据,1≤n≤2×105,0≤X,Ai≤109。