Привет! Давай разберёмся с задачей.
Нам нужно найти максимальное количество столов, которые можно произвести за день. У нас есть три ограничения — число студентов \( N \), скилл каждого студента от \( s_1 \) до \( s_N \), и время \( T \), за которое нужно сделать стол. Каждый студент с навыком \( s_i \) может сделать \(\lfloor T / s_i \rfloor\) деталей за \( T \) секунд.
Шаги решения:
Понять формулу: Нам нужно посчитать, сколько деталей в общей сложности могут сделать все студенты за \( T \) секунд. Это сумма всех \(\lfloor T / s_i \rfloor\).
Проверка на достаточность деталей: Чтобы сделать один стол, нужно хотя бы \( V \) деталей. Значит, общее количество деталей должно быть кратно \( V \), чтобы определить количество столов.
Двоичный поиск: Применим двоичный поиск по времени \( T \). Если за время \( T \) можно произвести достаточное количество деталей, значит, нужно попробовать меньшее \( T \) и найти минимально подходящее.
Краткий алгоритм:
- Задаём левую границу как \( 0 \), а правую \( T \) (где \( T \) — максимальное время).
- Проверяем среднее значение и считаем количество произведённых деталей.
- Если деталей достаточно, уменьшаем правую границу, иначе — увеличиваем левую.
- Конечное \( T \) (левая граница) даст наибольшее количество столов.
Попробуй реализацию такого подхода, и если будут вопросы — обязательно пиши!