#P16558. [Bapc2022]grinding gravel

[Bapc2022]grinding gravel

题目背景

你正在翻修花园,希望修建一条从街道通往家门口的碎石小路。地面已经被划分成若干容量相同的网格,容器中的碎石总重量恰好等于所有网格的总容量。

问题在于,现有石块的重量并不一定能直接把每个网格恰好填满。你可以使用磨石机把一块石头分成两块,但每次分割都需要时间,因此希望让分割次数尽可能少。

题目描述

nn 块石头,第 ii 块石头的重量为 wiw_i。每个网格的容量均为 kk

你可以进行若干次操作。每次操作选择一块现有石头,将它分成两块,总重量保持不变。分割得到的石块还可以继续分割。

你需要把所有石块完整地分配到若干网格中,使每个网格内石块的总重量都恰好等于 kk

求完成分配所需的最少二分次数。

题目保证所有石头的总重量是 kk 的倍数,因此网格数量为

i=1nwik.\frac{\sum_{i=1}^{n}w_i}{k}.

输入格式

第一行包含两个整数 n,kn,k,分别表示石头数量和每个网格的容量。

第二行包含 nn 个整数 w1,w2,,wnw_1,w_2,\ldots,w_n,表示各块石头的重量。

输出格式

输出一个整数,表示为了恰好填满所有网格,最少需要进行多少次二分。

数据范围

1n100,1\le n\le 100, 1k8,1\le k\le 8, 1wi106.1\le w_i\le 10^6.

并保证

i=1nwi\sum_{i=1}^{n}w_i

kk 的倍数。

样例 1

输入

5 8
2 4 5 6 7

输出

1

说明

有三个容量为 88 的网格。可以将重量为 2266 的石头放入第一个网格;把重量为 77 的石头分成重量为 3344 的两块;其余两个网格分别放入 3,53,54,44,4。因此只需分割一次。

样例 2

输入

2 5
12 13

输出

4