# Задача о времени
## Условие задачи
На вход программе подаются пять целых чисел: `n`, `dk`, `tk`, `dm` и `tm`.
Число `n` означает количество работников в офисе, `dk` и `tk` означают количество и время работы каждого работника над проектом k, а `dm` и `tm` означают количество и время работы каждого работника над проектом m.
Программа должна найти минимальное время, через которое все работники закончат работу над обоими проектами. При этом каждый работник может работать только над одним проектом одновременно, и он может переключаться между проектами только в моменты, когда заканчивается работа над одним проектом и начинается работа над другим.
## Решение задачи
Для решения задачи воспользуемся следующей логикой:
1. Инициализируем переменные `k`, `m` и `time`. Переменная `k` будет хранить количество работников, выполняющих проект k; переменная `m` - количество работников, выполняющих проект m; переменная `time` - время, прошедшее с начала работы над проектами.
2. С помощью оператора выбора присвоим значения переменным `k` и `m`. Значениями будут соответствующие значения, прочитанные с клавиатуры.
3. Вычислим время работы над обоими проектами с помощью тернарного оператора. Время будет равно `dk * tk`, если оно больше `dm * tm`, иначе время будет равно `dm * tm`.
4. Входим в бесконечный цикл `while True`.
5. Проверяем условие: если время делится на `tk` без остатка и время делится на `tm` без остатка, то значит все работники закончили работу над обоими проектами. Печатаем значения переменных `k` и `m` и завершаем программу с помощью оператора `exit(0)`.
6. Если время делится на `tk` без остатка, но не делится на `tm`, то значит какой-то работник закончил работу над проектом k и переключился на проект m. Увеличиваем переменную `k` на 1.
7. Если время не делится на `tk` без остатка, но делится на `tm`, то значит какой-то работник закончил работу над проектом m и переключился на проект k. Увеличиваем переменную `m` на 1.
8. Увеличиваем время на 1 и продолжаем цикл.
## Обоснование решения
При инициализации переменных `k`, `m` и `time` мы устанавливаем начальное состояние - все работники находятся на проекте k, никто не закончил работу, и прошло еще ноль времени.
В бесконечном цикле мы проверяем различные условия. Если все работники закончили работу над обоими проектами, мы выводим значения переменных `k` и `m` и завершаем программу. В противном случае мы увеличиваем переменную `k` или `m` в зависимости от того, над каким проектом закончила работу одна из групп работников.
Таким образом, программа будет работать до тех пор, пока все работники не закончат работу над обоими проектами. Время, найденное таким образом, будет минимальным, так как в точку, когда все работники переключились с одного проекта на другой, мы не можем получить меньшее время.