Прикол не в "контактах", в подходе к алгоритмизации. Есть задачи
пуска N из M секций (например, большого газового котла). Проще
посчитать сколько надо/сколько есть и отдельно логику какой
выключить/какой включить (максимум-минимум наработки с игнором
неисправных и выключенных в ремонт). Получается очень просто и
читабельно. Отдельно сумма включенных и задание,
отдельно максимум и минимум наработки,
и для каждой секции условие (если наработка равна максимальной и нужно меньше чем есть - выключить, если равна минимальной и включить - включить)