Grinding Gravel
면접 대비시간 제한4초메모리 제한1024 MB
돌의 무게들과 같은 용량의 격자 칸들이 주어질 때, 조각들을 칸에 정확히 채우기 위해 돌을 최소 몇 번 쪼개야 하는지 구한다.
문제
During the renovation of your garden, you decide that you want a gravel path running from the street to your front door. Being a member of the Boulders And Pebbles Community, you want this path to look perfect. You already have a regular grid to put the gravel in, as well as a large container of gravel containing exactly as much as the total capacity of the grid.
There is one problem: the gravel does not yet fit perfectly into the grid. Each grid cell has the same (fixed) capacity and every piece of gravel has a certain weight. You have a grindstone that can be used to split the stones into multiple pieces, but doing so takes time, so you want to do a minimal number of splits such that the gravel can be exactly distributed over the grid.
As an example, consider the first sample case. There are three grid cells of size , which can be filled as follows. Put the stones of weight and in the first cell. Now grind the stone of weight into two pieces of weight and . Then the other two grid cells get filled by weights and respectively.
입력
The input consists of:
- One line with two integers and (, ), the number of pieces of gravel and the capacity per grid cell.
- One line with integers ( for all ), the weight of each piece of gravel.
It is guaranteed that is a multiple of .
출력
Output the minimal number of times a stone needs to be split into two, such that all the pieces of gravel can be used to fill all the grid cells perfectly.