fork download
  1. import java.util.*
  2.  
  3. data class Task(val num: Int, val priority: Int)
  4.  
  5. fun main() {
  6. val sc = Scanner(System.`in`)
  7.  
  8. val sb = StringBuilder()
  9. val cnt = sc.nextLine().toInt()
  10. println("cnt: $cnt")
  11. repeat(cnt) {
  12. val pq = PriorityQueue<Int>(compareByDescending({ it }))
  13. val q = LinkedList<Task>()
  14. val (n, m) = sc.nextLine().split(" ").map { it.toInt() }
  15. println("n: $n, m: $m")
  16.  
  17. val token = StringTokenizer(sc.nextLine())
  18. repeat(n) {
  19. val priority = token.nextToken().toInt()
  20. pq.add(priority)
  21. q.addFirst(Task(num = it, priority = priority))
  22. }
  23.  
  24. var current = 1
  25. while (q.isNotEmpty()) {
  26. val task = q.removeLast()
  27. println("task: $task")
  28. if (task.priority == pq.peek()) {
  29. pq.poll()
  30. if (task.num == m) {
  31. println("current: $current")
  32. sb.append(current).append("\n")
  33. break
  34. } else {
  35. q.addFirst(task)
  36. current++
  37. }
  38. }
  39. }
  40. }
  41.  
  42. println(sb)
  43. }
  44.  
Success #stdin #stdout 0.15s 42800KB
stdin
3
1 0
5
4 2
1 2 3 4
6 0
1 1 9 1 1 1
stdout
cnt: 3
n: 1, m: 0
task: Task(num=0, priority=5)
current: 1
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