题目描述
小Z和朋友们去了回转寿司店大快朵颐!店里专门有一个餐盘回收处,这里会根据回收的餐盘数量进行奖品的分发。
小Z和朋友们吃剩的餐盘数量为 ai,他们会依次将自己的餐盘放到回收处。
假设回收处的餐盘数量当前为 cur(0≤cur<k),如果投入了一定数量的餐盘 ai,使得 cur+ai≥k,那么就会获得一个奖品。然后回收处的餐盘数量就会变成除以 k 的余数:cur←(cur+ai)modk。注意,即使 cur+ai 可能跨越多个 k,也只会获得一份奖品。
为了最大化所有人获得奖品的数量,小Z决定等到回收处的初始餐盘数量为 p 时,再带领大家去排队。求问他们总共能获得的最多奖品数量是多少。
输入格式
第一行包含两个整数 n 和 k,分别表示所有同学的人数和餐盘回收处的 k。
第二行包含 n 个整数 ,其中 ai 表示第 i 名同学准备回收的餐盘数量。
输出格式
他们在最优的 p 开始排队后,获得的奖品最多的数量。
输入输出样例
5 10
4 17 3 6 2
4
样例 #1说明
当他们在回收处初始有 p=8 个盘子开始排队:
- 第 1 个人投入 4 个盘子,总数变为 8+4=12≥10,获得 1 个奖品,然后数量变为 12mod10=2
- 第 2 个人投入 17 个盘子,总数变为 2+17=19≥10,获得 1 个奖品,然后数量变为 19mod10=9
- 第 3 个人投入 3 个盘子,总数变为 9+3=12≥10,获得 1 个奖品,然后数量变为 12mod10=2
- 第 4 个人投入 6 个盘子,总数变为 2+6=8<10,没有奖品
- 第 5 个人投入 2 个盘子,总数变为 8+2=10≥10,获得 1 个奖品,然后数量变为 10mod10=0
此时获得奖品的总数量最多为 4
数据范围
40%:1≤n,k≤2000
另外 10%:ai<k
100%:1≤n,k≤2×105,1≤ai≤109