Превращаешь координаты в длины отрезков: например первый отрезок по горизонтали будет равен y1, второй y2-y1 и т.д. - получится два списка X и Y (по вертикали и горизонтали соответственно)
Сортируешь оба списка (по убыванию). Затем нужно аккуратно реализовать следующую логику:
Во-первых, самой большой площадью будет Y[0]*X[0] (если какой-то из списков пустой - то взять w или h соответственно)
Затем найдем минимальную площадь:
Пусть i = 0, j = 0, total=0
- Пусть X[i]>Y[j] (если наоборот, то все дальнейшие шаги сделать зеркально - поменять i на j, X на Y и т.п.)
- Бинарным поиском ищем наибольшее u такое что X[i]*Y[u] >= X[i+1]*Y[j]
- total+=u-j+1
- Прекратить если total >= k
- i++
- Повторить с пункта 1
Минимальная площадь=max(X[i]*Y[j+total-k], X[i+total-k]*Y[j])
Сложность O(n*log(m)+m*log(n)) ну то есть по фигне. И памяти только на хранение двух списков на 10^5
Можете дать просто идею, без реализации, или какую-нибудь подсказку.