Блог пользователя jethya

Автор jethya, история, 3 года назад, По-английски

A marble factory has donated a large box of marbles to a kindergarten. Each marble has one out of $$$M$$$ different colours. The governess needs to divide all the marbles between the $$$N$$$ children in her group. It is acceptable if some children don't get any marbles. However, no child wants marbles of different colours – in other words, all marbles that a child gets need to be the same colour.
The governess also knows that children will be jealous if a child gets too many marbles. As an approximation, we will define the envy level in the group as the largest number of marbles given to one child. Help the governess divide the marbles in order to minimize the envy level.


Input Format:
The first line of input contains two positive integers $$$N$$$, the number of children, and $$$M$$$, the number of different colours.
Each of the following $$$M$$$ lines contains a positive integer, $$$X$$$ denoting number of marbles with that particular colour.

Constraints:
$$$1 ≤ N ≤ 10^{9}$$$
$$$1 ≤ M ≤ 3 . 10^{5}, M ≤ N$$$
$$$1 ≤ X ≤ 10^{9}$$$
Time limit: 1 sec

Output Format: The first and only line of output should contain the minimum possible envy level.

Sample Input:
5 2
7
4
Sample Output:
3

Explanation:
Let's say box contains 4 red marbles (RRRR) and 7 blue marbles (BBBBBBB) which we have to divide between 5 children, we can achieve an envy level of 3 by dividing the marbles in the following way: RR, RR, BB, BB, BBB. This is the lowest achievable envy level.

Please help with your ideas.

  • Проголосовать: нравится
  • -20
  • Проголосовать: не нравится

»
3 года назад, # |
  Проголосовать: нравится +1 Проголосовать: не нравится

You binary search for the answer. If you want to check if 'x' can be achieved, then you can allocate candies greedily s.t. you don't <=x candies whenever possible.

Now, if 'x' is possible so is 'x+1'. Hence you do a binary search and find the optimal 'x'