結果

問題 No.871 かえるのうた
ユーザー yakamotoyakamoto
提出日時 2019-08-31 00:38:30
言語 Kotlin
(2.1.0)
結果
AC  
実行時間 879 ms / 2,000 ms
コード長 1,289 bytes
コンパイル時間 16,674 ms
コンパイル使用メモリ 463,708 KB
実行使用メモリ 93,056 KB
最終ジャッジ日時 2024-11-30 10:54:46
合計ジャッジ時間 37,901 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 328 ms
57,048 KB
testcase_01 AC 298 ms
57,152 KB
testcase_02 AC 290 ms
57,052 KB
testcase_03 AC 284 ms
57,132 KB
testcase_04 AC 283 ms
57,172 KB
testcase_05 AC 283 ms
57,164 KB
testcase_06 AC 287 ms
57,060 KB
testcase_07 AC 287 ms
57,224 KB
testcase_08 AC 382 ms
57,752 KB
testcase_09 AC 388 ms
57,792 KB
testcase_10 AC 323 ms
57,424 KB
testcase_11 AC 354 ms
57,560 KB
testcase_12 AC 510 ms
67,216 KB
testcase_13 AC 411 ms
59,872 KB
testcase_14 AC 757 ms
91,676 KB
testcase_15 AC 765 ms
91,352 KB
testcase_16 AC 879 ms
91,224 KB
testcase_17 AC 736 ms
92,916 KB
testcase_18 AC 500 ms
65,756 KB
testcase_19 AC 795 ms
91,568 KB
testcase_20 AC 489 ms
65,984 KB
testcase_21 AC 627 ms
77,988 KB
testcase_22 AC 289 ms
57,184 KB
testcase_23 AC 282 ms
57,288 KB
testcase_24 AC 281 ms
57,044 KB
testcase_25 AC 372 ms
57,936 KB
testcase_26 AC 455 ms
61,876 KB
testcase_27 AC 464 ms
63,628 KB
testcase_28 AC 287 ms
56,920 KB
testcase_29 AC 613 ms
79,892 KB
testcase_30 AC 751 ms
91,376 KB
testcase_31 AC 375 ms
57,732 KB
testcase_32 AC 715 ms
86,972 KB
testcase_33 AC 741 ms
93,056 KB
testcase_34 AC 524 ms
71,760 KB
testcase_35 AC 616 ms
81,112 KB
testcase_36 AC 664 ms
89,652 KB
testcase_37 AC 673 ms
80,488 KB
testcase_38 AC 823 ms
92,136 KB
testcase_39 AC 836 ms
91,496 KB
testcase_40 AC 685 ms
82,636 KB
testcase_41 AC 296 ms
57,100 KB
testcase_42 AC 691 ms
82,940 KB
testcase_43 AC 285 ms
57,032 KB
testcase_44 AC 296 ms
57,184 KB
testcase_45 AC 357 ms
57,832 KB
testcase_46 AC 281 ms
57,052 KB
testcase_47 AC 285 ms
57,088 KB
testcase_48 AC 283 ms
57,064 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

import kotlin.math.max
import kotlin.math.min

// なんか本番でエラーでる
private val isDebug = runCatching {
  System.getenv("MY_DEBUG") != null
}.fold({it}, {false})

private fun readLn() = readLine()!!
private fun readInt() = readLn().toInt()
private fun readStrings() = readLn().split(" ")
private fun readInts() = readStrings().map { it.toInt() }.toIntArray()
private fun readLongs() = readStrings().map { it.toLong() }.toLongArray()
private fun debug(msg: () -> String) {
  if (isDebug) System.err.println(msg())
}
private fun debug(a: LongArray) {
  if (isDebug) debug{a.joinToString(" ")}
}

val MOD = 1000000007

data class Entry(val i: Int, val x: Long)

fun main() {
  var (N, K) = readInts()
  K--
  val X = readLongs()
  val A = readLongs()
  val set = java.util.TreeSet<Entry>(Comparator<Entry> { o1, o2 ->
    o1.x.compareTo(o2.x)
  })
  for (i in 0 until N) {
    set.add(Entry(i, X[i]))
  }

  var ans = 0
  var l = X[K]
  var r = X[K]
  while(true) {
    val e1 = set.higher(Entry(-1, l - 1))
    val e2 = set.lower(Entry(-1, r + 1))
    debug{"l:$l r:$r"}
    if (e1 != null && e2 != null && e1.x <= e2.x) {
      set.remove(e1)
      l = min(l, e1.x - A[e1.i])
      r = max(r, e1.x + A[e1.i])
      ans++
    } else {
      break
    }
  }

  println(ans)
}
0