https://coderun.yandex.ru/problem/maxim-triangle/description Средняя

Решение

import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import kotlin.math.abs

fun main() {
    val reader = BufferedReader(InputStreamReader(System.`in`))
    val writer = BufferedWriter(OutputStreamWriter(System.out))
    
    val n = reader.readLine().toInt()
    val frequencies = DoubleArray(n)
    val verdicts = Array(n) { "" }
    
    frequencies[0] = reader.readLine().toDouble()
    
    for (i in 1 until n) {
        val (freq, verdict) = reader.readLine().split(" ")
        frequencies[i] = freq.toDouble()
        verdicts[i] = verdict
    }
    
    var left = 30.0
    var right = 4000.0
    
    for (i in 1 until n) {
        val fPrev = frequencies[i - 1]
        val fCurr = frequencies[i]
        val verdict = verdicts[i]
        
        val mid = (fPrev + fCurr) / 2
        
        if (verdict == "closer") {
            if (fCurr > fPrev) {
                left = maxOf(left, mid)
            } else {
                right = minOf(right, mid)
            }
        } else {
            if (fCurr > fPrev) {
                right = minOf(right, mid)
            } else {
                left = maxOf(left, mid)
            }
        }
        
        if (abs(fCurr - fPrev) < 1e-9) {
            continue
        }
    }
    
    writer.write(String.format("%.6f %.6f", left, right))
    
    reader.close()
    writer.close()
}