Just Normal Coders Official Archive
fun main() {
val q = readLine()!!.toInt()
repeat(q) {
val parts = readLine()!!.split(" ")
val x = parts[0].toLong(); val y = parts[1].toLong()
val b = minOf(x, y) - 1
val a = x - b; val c = y - b
println("$a $b $c")
}
}
fun main() {
val n = readLine()!!.toInt()
val arr = readLine()!!.split(" ").map { it.toInt() }
var max1 = -1; var max2 = -1; var badDays = 0
for (a in arr) {
if (a < max2) badDays++
if (a > max1) { max2 = max1; max1 = a }
else if (a > max2) max2 = a
}
println(badDays)
}
fun solve() {
val s = readLine() ?: return; val t = readLine() ?: return
var i = 0; var j = 0
while (j < t.length) {
if (i >= s.length) { println("NO"); return }
if (s[i] == t[j]) { i++; j++ }
else if (t[j] == '+' && s[i] == '-') {
if (i + 1 < s.length && s[i+1] == '-') { i += 2; j++ }
else { println("NO"); return }
} else { println("NO"); return }
}
if (i == s.length) println("YES") else println("NO")
}
import java.util.ArrayDeque
fun main() {
val m = readLine()!!.toInt()
val b = readLine()!!.split(" ").map { it.toInt() }
val n = b.count { it == -1 }
val res = Array(n) { mutableListOf<Int>() }
val q = ArrayDeque<Int>()
for (i in 0 until n) q.add(i)
for (x in b) {
val i = q.removeFirst()
if (x == -1) continue
res[i].add(x)
q.addLast(i)
}
println(n)
for (i in 0 until n) {
print(res[i].size)
for (v in res[i]) print(" $v")
println()
}
}
import java.util.*
fun main() {
val sc = Scanner(System.`in`); val n = sc.nextInt(); val m = sc.nextInt()
val a = LongArray(n); val pref = LongArray(n + 1)
for (i in 0 until n) { a[i] = sc.nextLong(); pref[i+1] = pref[i] + a[i] }
val q = sc.nextInt()
repeat(q) {
val c = sc.nextInt(); val w = IntArray(c)
for (i in 0 until c) w[i] = sc.nextInt()
val gaps = mutableListOf<Int>(); gaps.add(w[0] - 1)
for (i in 0 until c - 1) gaps.add(w[i+1] - w[i] - 1)
gaps.add(m - w[c-1])
var cur = 0; for (gap in gaps) {
if (cur == n) break
val maxW = pref[cur] + gap
var l = cur; var r = n; var best = cur
while (l <= r) {
val mid = (l + r) / 2
if (pref[mid] <= maxW) { best = mid; l = mid + 1 } else r = mid - 1
}
cur = best
}
if (cur == n) println("YES") else println("NO")
}
}
Copyright © MikeMirzayanov
fun main() {
val n = readLine()!!.toInt()
val r = readLine()!!.split(" ").map { it.toInt() }
.withIndex().distinctBy { it.value }.sortedBy { it.value }.map { it.index + 1 }
if (r.size < 3) println("-1 -1 -1") else println("${r[0]} ${r[1]} ${r[2]}")
}
fun main() {
val n = readLine()!!.toLong()
val a = readLine()!!.split(" ").map { it.toInt() }
var ans = 0L
for ((i, k) in a.withIndex()) {
if (k == 0) continue
var visits = (i + 1).toLong()
if (k > 0) visits += (k - 1) * n
if (visits > ans) ans = visits
}
println(ans)
}
import kotlin.math.*
fun main() {
val (n, k) = readLine()!!.split(" ").map { it.toInt() }
val a = IntArray(n); val b = IntArray(n); val c = IntArray(n)
for (i in 0 until n) {
val l = readLine()!!.split(" ").map { it.toInt() }
a[i] = l[0]; b[i] = l[1]; c[i] = l[2]
}
println(solveIceCream(a, b, c, n, k))
}
private fun solveIceCream(a: IntArray, b: IntArray, c: IntArray, n: Int, k: Int): Long {
val sa = a.fold(0L, Long::plus); val sb = b.fold(0L, Long::plus)
if (sa > k || sb < k) return -1
var res = a.foldIndexed(0L) { i, acc, av -> acc + av.toLong() * c[i] }
val e = c.mapIndexed { i, cv -> Extra(cv, b[i] - a[i]) }.sortedBy { it.c }
var rem = k - sa; var idx = 0
while (rem > 0) {
val take = min(rem, e[idx].q.toLong()); rem -= take; res += e[idx].c * take; idx++
}
return res
}
data class Extra(val c: Int, val q: Int)
import kotlin.math.*
fun main() {
val (n, a, b, k) = readLine()!!.split(" ").map { it.toInt() }
val rm = readLine()!!.split(" ").map { it.toInt() }.groupingBy { it }.eachCount().mapValues { Left(it.value) }
val rl = rm.keys.sorted().let { if (a >= b) it else it.reversed() }
var ans = 0
for (r in rl) {
val p = rm.getValue(r); if (p.cnt < a) continue
val q = rm[r * k] ?: continue; if (q.cnt < b) continue
val t = min(p.cnt / a, q.cnt / b)
ans += t; p.cnt -= a * t; q.cnt -= b * t
}
println(ans)
}
data class Left(var cnt: Int)
import kotlin.math.*
fun main() {
val (n, a, b, k) = readLine()!!.split(" ").map { it.toInt() }
val rm = readLine()!!.split(" ").map { it.toInt() }.groupingBy { it }.eachCount().mapValues { Left(it.value) }
val rl = rm.keys.sorted().let { if (a >= b) it else it.reversed() }
var ans = 0
for (r in rl) {
val p = rm.getValue(r); if (p.cnt < a) continue
val q = rm[r * k] ?: continue; if (q.cnt < b) continue
val t = min(p.cnt / a, q.cnt / b)
ans += t; p.cnt -= a * t; q.cnt -= b * t
}
println(ans)
}
data class Left(var cnt: Int)
fun main() {
val n = readLine()!!.toInt(); val w = List(n) { readLine()!! }
val k = "kotlin"; val g = k.withIndex().associateBy({ it.value }) { it.index }
val gf = IntArray(k.length) { -1 }; val gn = IntArray(n); val gv = IntArray(n)
for ((i, s) in w.withIndex()) {
val p = g.getValue(s.first()); val q = (g.getValue(s.last()) + 1) % k.length
gv[i] = q; gn[i] = gf[p]; gf[p] = i
}
val ans = IntArray(n); var cnt = 0; val vStack = IntArray(n + 1); val eStack = IntArray(n + 1); var sp = 0
while (true) {
val p = vStack[sp]
if (gf[p] < 0) { if (sp <= 0) break; ans[cnt++] = eStack[sp--]; continue }
val j = gf[p]; val q = gv[j]; gf[p] = gn[j]; sp++; vStack[sp] = q; eStack[sp] = j
}
ans.reverse(); println(ans.joinToString(" ") { (it + 1).toString() })
}