#CSP0037. 包

    ID: 337 远端评测题 1000ms 1024MiB 尝试: 26 已通过: 3 难度: 3 上传者: 标签>基础算法前缀和排序贪心其他双指针双指针T2

题目描述

商店里有 nn 件商品,其中第 ii 件商品的重量为 aia_i。店主收到了情报,得知小偷正觊觎自己的店铺,于是他准备采取措施,将损失降到最低。

小偷计划从店里偷走 kk 件商品。但如果商品太重,不仅难以偷窃,被警察抓住的可能性也会变高。因此,小偷会最小化他所偷商品的总重量。

  • 不过,如果店里的商品总数不足 kk 件,小偷会偷走店里所有的商品。

在小偷到达店铺之前,店主会把店里的一些商品装进一个包里带走。之后,小偷会对店主没有带走的那些商品,以上述方式实施盗窃。

店主希望通过合理地往包里装商品,来最大化小偷最终偷走的商品总重量。

店主的包能承受的重量是有限的。当给定一个最大承重 cc 时,请对所有的 x=1,2,,cx = 1, 2, \ldots, c 回答以下问题:

在店主能放入包中的商品总重量不超过 xx 的条件下,小偷偷走的商品总重量的最大值是多少?

输入格式

第一行给定 n,k,cn, k, c,由空格分隔。

第二行给定 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n,由空格分隔。

输出格式

输出 cc 行。第 ii 行输出当 x=ix = i 时,小偷偷走的商品总重量的最大值。

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

提示

样例 1 解释

  • x=1x=1,店主带走商品 a1a_1,小偷拿走 a2a_2
  • x=2x=2,店主带走商品 a1a_1,小偷拿走 a2a_2
  • x=3x=3,店主带走商品 a1,a2a_1,a_2,小偷拿走 a3a_3
  • x=4x=4,店主带走商品 a1,a2a_1,a_2,小偷拿走 a3a_3
  • x=5x=5,店主带走商品 a1,a2a_1,a_2,小偷拿走 a3a_3
  • x=6x=6,店主带走商品 a1,a2,a3a_1,a_2,a_3,小偷拿走 a4a_4

因此输出分别是 2 2 3 3 3 4

样例 3 解释

由于小偷要偷两件物品,因此不论 xx 是多少,店主都只带走商品 a1a_1,小偷不得不拿走 a2+a3=8a_2+a_3=8 这样可以最大化小偷偷走的总重量。

数据范围

对于 100%100\% 的数据满足:1kn50001 \le k \le n \le 5\,0001c10000001 \le c \le 1\,000\,0001ai10000001 \le a_i \le 1\,000\,000

子任务 特殊限制 分值
1 n10,ai10000,c10000n \le 10, a_i \le 10\,000, c \le 10\,000 13
2 n80,ai10000,c10000n \le 80, a_i \le 10\,000, c \le 10\,000 17
3 ai10000,c10000a_i \le 10\,000, c \le 10\,000 23
4 k=1k = 1 16
5 无额外限制条件 31