Без игреков это задача о назначении. Для которой есть хорошие алгоритмы. Но они дают целочисленное решение без особых мер для этого потому, что матрица коэффициентов абсолютно унимодулярна. Добавление ограничения по игрекам это свойство нарушает, и обычный симплекс-метод даст, скорее всего, нецелочисленное решение. Так что задача ЦЛП общего вида. Можно попытаться построить нечто метода ветвей и границ. Скажем, так:
0. Рекорд устанавливаем -М (где М - большое число)
1. Решаем задачу о назначении, максимизируя сумму по Y. Если хуже рекорда - выходим.
2. Проверяем сумму по X. Если условие выполняется - запоминаем рекорд по Y. Далее здесь не ветвим.
3. Если не выполняется - находим самый большой
в полученном решении, ветвимся, переходя в каждой ветке к ш. 1. Одна ветвь - запрет этого X (установлением соответствующего
"глубоко отрицательным"), вторая - обязательное включение i,j в решение (вычёркивая соответствующие строки и столбцы, но запоминая вклад
и
.