Геометрически здесь задача проверки, что заданный в координатах X(distance) - Y(light) прямоугольник полностью покрывается набором других прямоугольников.
Как вариант, формируем общий список левых и правых границ всех покрывающих прямоугольников по X, сортируем его, слева и справа ограничиваем целевым прямоугольником, затем для каждого интервала проверяем, что он полностью покрывается по Y.
Например:
Целевой прямоугольник (1, 1)-(6, 6)
Покрывающие прямоугольники: (0, 0)-(3, 4), (2, 1)-(7, 5), (0, 3)-(6, 7)
Составляем список границ по X: 0, 3, 2, 7, 0, 6
Удаляем дубли, сортируем и ограничиваем по [1, 6]: 1, 2, 3, 6
Для каждого интервала составляем список интервалов по Y и объединяем интервалы:
[1, 2]: [0, 4] + [3, 7] = [0, 7], что перекрывает целевой [1, 6]
[2, 3]: [0, 4] + [1, 5] + [3, 7] = [0, 7], что перекрывает целевой [1, 6]
[3, 6]: [1, 5] + [3, 7] = [1, 7], что перекрывает целевой [1, 6]
На всех интервалах полное покрытие, значит целевой прямоугольник покрывается полностью.
Сложность, правда, высокая - n2.