fun findFloorAndCeil(lst: List<Int>, N: Int): Pair<Int, Int> {
var floorval = Int.MIN_VALUE // Initialize to smallest possible value
var ceilval = Int.MAX_VALUE // Initialize to largest possible value
for (num in lst) {
if (num <= N && num > floorval) {
floorval = num // Update floorval if num is closer to N
}
if (num >= N && num < ceilval) {
ceilval = num // Update ceilval if num is closer to N
}
}
// If no valid floorval or ceilval is found, set them to a special value
if (floorval == Int.MIN_VALUE) {
floorval = -1
}
if (ceilval == Int.MAX_VALUE) {
ceilval = -1
}
return Pair(floorval, ceilval)
}
fun main() {
val lst = listOf(4, 10, 8, 2, 6, 9, 1)
val N = 5
val (floorval, ceilval) = findFloorAndCeil(lst, N)
println("floor: ${if (floorval == -1) "None" else floorval}")
println("ceil: ${if (ceilval == -1) "None" else ceilval}")
}
/*
run:
floor: 4
ceil: 6
*/