結果

問題 No.1778 括弧列クエリ / Bracketed Sequence Query
ユーザー yudedako
提出日時 2022-01-28 23:21:52
言語 Kotlin
(2.1.0)
結果
TLE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,054 bytes
コンパイル時間 19,845 ms
コンパイル使用メモリ 452,924 KB
実行使用メモリ 114,924 KB
最終ジャッジ日時 2024-12-30 11:40:14
合計ジャッジ時間 62,810 ms
ジャッジサーバーID
(参考情報)
judge1 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 25 TLE * 2
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.*

fun main() {
    val (n, q) = readLine()!!.split(' ').map(String::toInt)
    val s = readLine()!!
    val queries = List(q) {
        val (x, y) = readLine()!!.trim().split(' ').map(String::toInt)
        minOf(x, y) - 1 to maxOf(x, y) - 1
    }
    val stack = mutableListOf<Int>()
    val pair = IntArray(n)
    for (i in s.indices) {
        when(s[i]) {
            '(' -> stack.add(i)
            ')' -> {
                val l = stack.removeLast()
                pair[l] = i
                pair[i] = l
            }
        }
    }
    val set = TreeSet<Int>()
    var last = 0
    val result = IntArray(q){-1}
    for ((index, p) in queries.withIndex().sortedBy { it.value.first }) {
        val (min, max) = p
        while (last < n && last <= min) {
            if (s[last] == '(') {
                set.add(pair[last])
            }
            last += 1
        }
        result[index] = set.higher(max - 1) ?: continue
    }
    println(result.joinToString("\n"){i -> if (i >= 0) "${pair[i] + 1} ${i + 1}" else "-1"})
}
0