Всього на змагання прибуло s = \sum_{i=1}^n a_i учасників. Оскільки кожна аудиторія обладнана комп'ютерами, потрібно принаймні кімнат.
Нехай — найбільша кількість учасників в одній команді (максимальне значення серед усіх чисел a_i). Якщо p > ⌈s/m⌉, то потрібно принаймні кімнат.
Конструктивно можна показати, що завжди достатньо max(⌈s/m⌉, p) аудиторій для проведення олімпіади.
Приклад
На олімпіаду прибуло 2 + 3 + 4 + 1 + 2 = 12 школярів. Оскільки кожен клас обладнано комп'ютерами, для проведення олімпіади потрібно принаймні 12 / 3 = 4 класу.
Найбільша кількість учасників представляє третя команда — особи. Їх можна розсадити по одному в різні класи.
Наприклад, можлива наступна розсадка учасників:
Реалізація алгоритму
Читаємо вхідні дані.
scanf("%d %d",&n,&m);Обчислюємо загальну кількість учасників , а також розмір найбільшої команди.
p = 0;
for (i = 0; i < n; i++)
{
scanf("%d",&x);
s += x;
if (x > p) p = x;
}Значення res = ⌈s/m⌉ обчислюємо як (s + m - 1) / m.
res = (s + m - 1) / m;Якщо p > ⌈s/m⌉, то відповіддю буде .
if (res < p) res = p;Виводимо відповідь.
printf("%d\n",res);