import java.util.* data class Task(val num: Int, val priority: Int) fun main() { val sc = Scanner(System.`in`) val sb = StringBuilder() val cnt = sc.nextLine().toInt() println("cnt: $cnt") repeat(cnt) { val pq = PriorityQueue<Int>(compareByDescending({ it })) val q = LinkedList<Task>() val (n, m) = sc.nextLine().split(" ").map { it.toInt() } println("n: $n, m: $m") val token = StringTokenizer(sc.nextLine()) repeat(n) { val priority = token.nextToken().toInt() pq.add(priority) q.addFirst(Task(num = it, priority = priority)) } var current = 1 while (q.isNotEmpty()) { val task = q.removeLast() println("task: $task") if (task.priority == pq.peek()) { pq.poll() if (task.num == m) { sb.append(current).append("\n") break } else { q.addFirst(task) current++ } } } } println(sb) }
3 1 0 5 4 2 1 2 3 4 6 0 1 1 9 1 1 1
cnt: 3 n: 1, m: 0 task: Task(num=0, priority=5) n: 4, m: 2 task: Task(num=0, priority=1) task: Task(num=1, priority=2) task: Task(num=2, priority=3) task: Task(num=3, priority=4) task: Task(num=3, priority=4) n: 6, m: 0 task: Task(num=0, priority=1) task: Task(num=1, priority=1) task: Task(num=2, priority=9) task: Task(num=3, priority=1) task: Task(num=4, priority=1) task: Task(num=5, priority=1) task: Task(num=2, priority=9) task: Task(num=3, priority=1) task: Task(num=4, priority=1) task: Task(num=5, priority=1) task: Task(num=3, priority=1) task: Task(num=4, priority=1) 1