B. 餐盘回收(plate)

    传统题 文件IO:plate 1000ms 256MiB 文件IO:plate

餐盘回收(plate)

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“赛后递交”以递交本题。

题目描述

小Z和朋友们去了回转寿司店大快朵颐!店里专门有一个餐盘回收处,这里会根据回收的餐盘数量进行奖品的分发。

小Z和朋友们吃剩的餐盘数量为 aia_i,他们会依次将自己的餐盘放到回收处。

假设回收处的餐盘数量当前为 cur(0≤cur<k)cur(0\le cur<k),如果投入了一定数量的餐盘 aia_i,使得 cur+ai≥kcur+a_i\geq k,那么就会获得一个奖品。然后回收处的餐盘数量就会变成除以 kk 的余数:cur←(cur+ai)mod  kcur\leftarrow (cur+a_i)\mod k。注意,即使 cur+aicur+a_i 可能跨越多个 kk,也只会获得一份奖品。

为了最大化所有人获得奖品的数量,小Z决定等到回收处的初始餐盘数量为 pp 时,再带领大家去排队。求问他们总共能获得的最多奖品数量是多少。

输入格式

第一行包含两个整数 nn 和 kk,分别表示所有同学的人数和餐盘回收处的 kk。

第二行包含 nn 个整数 ,其中 aia_i 表示第 ii 名同学准备回收的餐盘数量。

输出格式

他们在最优的 pp 开始排队后,获得的奖品最多的数量。

输入输出样例

5 10
4 17 3 6 2
4

样例 #1\tt \#1说明

当他们在回收处初始有 p=8p=8 个盘子开始排队:

  1. 第 11 个人投入 44 个盘子,总数变为 8+4=12≥108+4=12\ge10,获得 11 个奖品,然后数量变为 12mod  10=212\mod 10=2
  2. 第 22 个人投入 1717 个盘子,总数变为 2+17=19≥102+17=19\ge10,获得 11 个奖品,然后数量变为 19mod  10=919\mod 10=9
  3. 第 33 个人投入 33 个盘子,总数变为 9+3=12≥109+3=12\ge10,获得 11 个奖品,然后数量变为 12mod  10=212\mod 10=2
  4. 第 44 个人投入 66 个盘子,总数变为 2+6=8<102+6=8<10,没有奖品
  5. 第 55 个人投入 22 个盘子,总数变为 8+2=10≥108+2=10\ge10,获得 11 个奖品,然后数量变为 10mod  10=010\mod 10=0

此时获得奖品的总数量最多为 44

数据范围

40%:1≤n,k≤200040\%:1\le n,k\le 2000

另外 10%:ai<k10\%:a_i< k

100%:1≤n,k≤2×105,1≤ai≤109100\%:1\le n,k\le 2\times10^5,1\le a_i\le 10^9

【2026CSP-J联测】第四套

未参加
状态
已结束
规则
OI
题目
4
开始于
2026-9-30 18:00
结束于
2026-10-5 0:00
持续时间
102 小时
主持人
参赛人数
4