結果

問題 No.871 かえるのうた
ユーザー yakamotoyakamoto
提出日時 2019-08-31 00:38:30
言語 Kotlin
(1.9.23)
結果
AC  
実行時間 899 ms / 2,000 ms
コード長 1,289 bytes
コンパイル時間 13,087 ms
コンパイル使用メモリ 456,820 KB
実行使用メモリ 92,768 KB
最終ジャッジ日時 2024-05-07 16:31:34
合計ジャッジ時間 39,979 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 336 ms
51,728 KB
testcase_01 AC 286 ms
51,692 KB
testcase_02 AC 282 ms
51,752 KB
testcase_03 AC 300 ms
51,720 KB
testcase_04 AC 296 ms
51,908 KB
testcase_05 AC 295 ms
51,652 KB
testcase_06 AC 305 ms
51,536 KB
testcase_07 AC 310 ms
51,804 KB
testcase_08 AC 388 ms
53,228 KB
testcase_09 AC 398 ms
53,368 KB
testcase_10 AC 336 ms
52,288 KB
testcase_11 AC 368 ms
52,812 KB
testcase_12 AC 532 ms
62,372 KB
testcase_13 AC 417 ms
53,956 KB
testcase_14 AC 798 ms
90,944 KB
testcase_15 AC 785 ms
90,236 KB
testcase_16 AC 899 ms
90,988 KB
testcase_17 AC 777 ms
92,768 KB
testcase_18 AC 514 ms
61,052 KB
testcase_19 AC 836 ms
91,300 KB
testcase_20 AC 505 ms
61,476 KB
testcase_21 AC 680 ms
72,044 KB
testcase_22 AC 300 ms
51,776 KB
testcase_23 AC 293 ms
51,708 KB
testcase_24 AC 287 ms
51,556 KB
testcase_25 AC 389 ms
53,128 KB
testcase_26 AC 470 ms
56,404 KB
testcase_27 AC 496 ms
59,292 KB
testcase_28 AC 295 ms
51,720 KB
testcase_29 AC 645 ms
74,600 KB
testcase_30 AC 781 ms
90,676 KB
testcase_31 AC 390 ms
53,172 KB
testcase_32 AC 739 ms
83,132 KB
testcase_33 AC 768 ms
92,392 KB
testcase_34 AC 557 ms
65,364 KB
testcase_35 AC 691 ms
76,736 KB
testcase_36 AC 708 ms
87,180 KB
testcase_37 AC 695 ms
76,760 KB
testcase_38 AC 856 ms
91,844 KB
testcase_39 AC 884 ms
91,192 KB
testcase_40 AC 701 ms
79,272 KB
testcase_41 AC 302 ms
51,704 KB
testcase_42 AC 699 ms
78,488 KB
testcase_43 AC 291 ms
51,652 KB
testcase_44 AC 296 ms
51,840 KB
testcase_45 AC 344 ms
52,860 KB
testcase_46 AC 290 ms
51,744 KB
testcase_47 AC 284 ms
51,740 KB
testcase_48 AC 292 ms
57,164 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