#loj5759. 「ROI 2026 Day2」火星背包

「ROI 2026 Day2」火星背包

#5759. 「ROI 2026 Day2」火星背包

标签: 传统 | 时间限制: 1000 ms | 内存限制: 1024 MiB |

题目描述

译自 ROI 2026 Day2 T3. Марсианский рюкзак

火星人 Marvin 正在整理他的背包。在他面前摆放着 nn 个物品,编号从 11nn。每个物品都有两个属性:第 ii 个物品的奇怪值 wiw_i 和价值 cic_i。奇怪值是一个非负整数,其二进制表示中包含不超过 kk 个比特位 (0wi<2k)(0 \le w_i < 2^k);价值是一个非负整数,不超过 10910^9 (0ci109)(0 \le c_i \le 10^9)

一个物品集合的总价值等于其中所有物品价值之和,而该集合的总奇怪值定义为其中所有物品奇怪值的按位 (OR) 运算结果。

如果一个物品集合的总价值不小于 CC,Marvin 就称其为有价值的。对于从 11nn 的每个 ii,Marvin 都希望从编号不超过 ii 的物品中选出一个有价值的集合,使得其总奇怪值尽可能小。

一组整数的按位运算定义如下:考虑这些数字的二进制表示,如果集合中至少有一个数字在第 jj 位上为 11,则结果的第 jj 位也为 11。在编程语言中,此运算通常用符号 \mid 表示。例如,$(10 \mid 3 \mid 9) = (1010_2 \mid 0011_2 \mid 1001_2) = 1011_2 = 11$。

输入格式

第一行包含三个整数 n,kn, kCC $(1 \le n \le 2\,000\,000, 1 \le k \le 22, 1 \le C \le 10^{15})$,分别代表物品的数量、奇怪值二进制表示的位数限制以及有价值集合的最小价值要求。

接下来的 nn 行,每行包含两个整数 wiw_icic_i (0wi<2k,0ci109)(0 \le w_i < 2^k, 0 \le c_i \le 10^9),分别代表对应物品的奇怪值和价值。

输出格式

输出 nn 个整数,其中第 ii 个整数应等于前 ii 个物品所能组成的有价值集合的最小总奇怪值。若无法选出有价值的集合,则输出 1-1

样例

输入

5 4 12
8 7
2 6
3 6
1 12
3 5

输出

-1
10
3
1
1

对于 i=1i = 1,只有一个奇怪值为 88 且价值为 77 的物品。由于无法选出一个物品子集使得其价值总和至少为 1212,因此答案为 1-1

对于 i=2i = 2,有两个物品。要选出有价值的子集,唯一的方案是同时选取这两个物品。总奇怪值等于 82=108 \mid 2 = 10

对于 i=3i = 3,任何包含两个或更多物品的子集都是有价值的。最优方案是选择第二个和第三个物品,它们的总奇怪值为 23=32 \mid 3 = 3

对于 i=4i = 4,只选择第四个物品变得可行,其价值足够且奇怪值为 11,这是可能的最小值。

对于 i=5i = 5,选择第四个物品同样是最优方案。

数据范围与提示

详细子任务附加限制及分值如下表所示。其中子任务 00 是样例。

子任务 分值 nn kk 附加限制 子任务依赖
11 1010 n20n \le 20 k10k \le 10 00
22 1111 n100n \le 100 0,10, 1
33 1414 n50000n \le 50\,000 0,1,20, 1, 2
44 1313 n1000000n \le 1\,000\,000 k19k \le 19 所有 wiw_i 均为 22 的幂次
55 1111 n2000n \le 2\,000 样例, 1,21, 2
66 1818 n500000n \le 500\,000 k16k \le 16 0,1,2,30, 1, 2, 3
77 66 n1000000n \le 1\,000\,000 k19k \le 19 0,14,60, 1 \sim 4, 6
88 66 样例, 14,6,71 \sim 4, 6, 7
99 1111 0,180, 1 \sim 8