package Yukicoder fun main(args: Array) { fun readLineLongArray(): List { val str = readLine() as String val arrStr = str.split(" ") val ret = arrStr.map { it.toLong() } return ret } fun readLineLong(): Long { val str = readLine() as String return str.toLong() } fun readLineInt(): Int { val str = readLine() as String return str.toInt() } fun readLineIntArray() : List { val str = readLine() as String val arrStr = str.split(" ") val ret = arrStr.map { it.toInt() } return ret } fun readLineDoubleArray(): List { val str = readLine() as String val arrStr = str.split(" ") val ret = arrStr.map { it.toDouble() } return ret } fun readLineDouble() : Double { val str = readLine() as String return str.toDouble() } fun readLineString() : String { return readLine() as String } // fun readLineStringArray(): List { // val str = readLine() as String // val arrStr = str.split(" ") // return arrStr // } var maxV : Long = 1000000000 // var maxV : Long = 10 var minV : Long = 1 var bafD = (maxV + minV).toDouble() / 2 var baf = bafD.toLong() while (maxV != minV) { println("? " + (minV + baf)) val outou = readLineInt() if (outou == 1) { minV = minV + baf } else { maxV = minV + baf - 1 } bafD /= 2 baf = Math.ceil(bafD).toLong() } println("! " + minV) }