Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.brightos
- import java.util.ArrayList
- import kotlin.math.pow
- fun main() {
- val array = ArrayList<Int>() // Массив, в котором идёт работа
- val n: Int = readLine()!!.toInt() // Длина входного массива
- var p = 2.0 // Необходимый размер массива типа Double
- var a = 0 // Херня
- var b = 0 // Херня
- var max = 0 // Максимум
- p = p.pow(Integer.toBinaryString(n).length)
- val k = p.toInt() // Необходимый размер массива типа Int
- for (i in 0..k)
- array.add(-1)
- readLine()!!.forEach {
- if (it != ' ')
- array.add(Integer.parseInt(it.toString()))
- }
- for (i in k + n..k)
- array.add(-1)
- array.add(0)
- var c = (array.size - 1) / 2 // Указатель на середину
- var r = array.size - 1 // Указатель на конец
- while (r != c) {
- for (i in c..r step 2)
- if (array[i] > array[i + 1])
- array[i / 2] = array[i]
- else
- array[i / 2] = array[i + 1]
- c /= 2
- r /= 2
- }
- a = readLine()!!.toInt()
- b = readLine()!!.toInt()
- a += k - 1 // Переводим на правильное положение a
- b += k - 1 // Переводим на правильное положение b
- if (a % 2 == 0)
- if (array[a] > max)
- max = array[a++]
- if (b % 2 != 1 && a != b)
- if (array[b] > max)
- max = array[b--]
- while (a != b) {
- a /= 2
- b /= 2
- }
- if (array[a] > max)
- max = array[a]
- print(max.toString())
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement