Advertisement
BrightOS

Денис. 11 "Б". ДЗ на 12.11.2020

Nov 11th, 2020
979
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.85 KB | None | 0 0
  1. package com.brightos
  2.  
  3. import java.util.ArrayList
  4. import kotlin.math.pow
  5.  
  6. fun main() {
  7.     val array = ArrayList<Int>()        // Массив, в котором идёт работа
  8.     val n: Int = readLine()!!.toInt()   // Длина входного массива
  9.     var p = 2.0                         // Необходимый размер массива типа Double
  10.     var a = 0                           // Херня
  11.     var b = 0                           // Херня
  12.     var max = 0                         // Максимум
  13.  
  14.     p = p.pow(Integer.toBinaryString(n).length)
  15.  
  16.     val k = p.toInt()       // Необходимый размер массива типа Int
  17.  
  18.     for (i in 0..k)
  19.         array.add(-1)
  20.  
  21.     readLine()!!.forEach {
  22.         if (it != ' ')
  23.             array.add(Integer.parseInt(it.toString()))
  24.     }
  25.  
  26.     for (i in k + n..k)
  27.         array.add(-1)
  28.  
  29.     array.add(0)
  30.  
  31.     var c = (array.size - 1) / 2    // Указатель на середину
  32.     var r = array.size - 1          // Указатель на конец
  33.  
  34.     while (r != c) {
  35.         for (i in c..r step 2)
  36.             if (array[i] > array[i + 1])
  37.                 array[i / 2] = array[i]
  38.             else
  39.                 array[i / 2] = array[i + 1]
  40.         c /= 2
  41.         r /= 2
  42.     }
  43.  
  44.     a = readLine()!!.toInt()
  45.     b = readLine()!!.toInt()
  46.  
  47.     a += k - 1  // Переводим на правильное положение a
  48.     b += k - 1  // Переводим на правильное положение b
  49.  
  50.     if (a % 2 == 0)
  51.         if (array[a] > max)
  52.             max = array[a++]
  53.  
  54.     if (b % 2 != 1 && a != b)
  55.         if (array[b] > max)
  56.             max = array[b--]
  57.  
  58.     while (a != b) {
  59.         a /= 2
  60.         b /= 2
  61.     }
  62.  
  63.     if (array[a] > max)
  64.         max = array[a]
  65.  
  66.     print(max.toString())
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement