atcoder#ABC252H. [ABC252Ex] K-th beautiful Necklace

[ABC252Ex] K-th beautiful Necklace

题目描述

N N 個の宝石があります。i i 番目の宝石は色が Di D_i で美しさが Vi V_i です。
ここで、色は 1,2,,C 1,2,\ldots,C のいずれかであり、どの色の宝石も少なくとも 1 1 個存在します。

N N 個の宝石から、色が相異なる C C 個の宝石を選んでネックレスを作ります。(選ぶ順番は考えません。) ネックレスの美しさは選んだ宝石の美しさのビットごとの  XOR \rm\ XOR となります。

全てのありえるネックレスの作り方のうち、美しさが K K 番目に大きいもののネックレスの美しさを求めてください。(同じ美しさの作り方が複数存在する場合、それらは全て数えます。)

ビットごとの  XOR \rm\ XOR とは 整数 A, B A,\ B のビットごとの  XOR \rm\ XOR A  XOR B A\ {\rm\ XOR}\ B は、以下のように定義されます。 - A  XOR B A\ {\rm\ XOR}\ B を二進表記した際の 2k 2^k (k  0 k\ \geq\ 0 ) の位の数は、A, B A,\ B を二進表記した際の 2k 2^k の位の数のうち一方のみが 1 1 であれば 1 1 、そうでなければ 0 0 である。

例えば、3  XOR 5 = 6 3\ {\rm\ XOR}\ 5\ =\ 6 となります (二進表記すると: 011  XOR 101 = 110 011\ {\rm\ XOR}\ 101\ =\ 110 )。

输入格式

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

N N C C K K D1 D_1 V1 V_1 \vdots DN D_N VN V_N

输出格式

答えを出力せよ。

题目大意

给定 n n 个珠子,每个珠子的颜色为 di d_i ,权值为 vi v_i 。颜色共有 c c 种,且保证每种颜色至少有一颗珠子。你需要从 n n 个珠子种选择 c c 个颜色不同的珠子串成一条项链,其权值为其中所有珠子权值的异或和。你需要输出权值第 k k 大的项链的权值。只要选取的珠子不同,即使权值相同也算不同项链。数据保证可能构成的项链数不小于 k k

4 2 3
2 4
2 6
1 2
1 3
5
3 1 2
1 0
1 0
1 0
0
10 3 11
1 414213562373095048
1 732050807568877293
2 236067977499789696
2 449489742783178098
2 645751311064590590
2 828427124746190097
3 162277660168379331
3 316624790355399849
3 464101615137754587
3 605551275463989293
766842905529259824

提示

制約

  • 1  C  N  70 1\ \leq\ C\ \leq\ N\ \leq\ 70
  • 1  Di  C 1\ \leq\ D_i\ \leq\ C
  • 0  Vi < 260 0\ \leq\ V_i\ <\ 2^{60}
  • 1  K  1018 1\ \leq\ K\ \leq\ 10^{18}
  • 少なくとも K K 種類のネックレスを作ることができる
  • 入力に含まれる値は全て整数である

Sample Explanation 1

以下のような 4 4 種類のネックレスを作ることができます。 - 1,3 1,3 番目の宝石を選ぶ。ネックレスの美しさは 4  XOR 2 =6 4\ {\rm\ XOR}\ 2\ =6 となる。 - 1,4 1,4 番目の宝石を選ぶ。ネックレスの美しさは 4  XOR 3 =7 4\ {\rm\ XOR}\ 3\ =7 となる。 - 2,3 2,3 番目の宝石を選ぶ。ネックレスの美しさは 6  XOR 2 =4 6\ {\rm\ XOR}\ 2\ =4 となる。 - 2,4 2,4 番目の宝石を選ぶ。ネックレスの美しさは 6  XOR 3 =5 6\ {\rm\ XOR}\ 3\ =5 となる。 よって美しさが 3 3 番目に大きいネックレスの美しさは 5 5 となります。

Sample Explanation 2

3 3 種類のネックレスを作ることができ、いずれも美しさは 0 0 です。