結果
| 問題 | 
                            No.1778 括弧列クエリ / Bracketed Sequence Query
                             | 
                    
| コンテスト | |
| ユーザー | 
                             Wizist
                         | 
                    
| 提出日時 | 2021-12-11 18:23:10 | 
| 言語 | PyPy3  (7.3.15)  | 
                    
| 結果 | 
                             
                                TLE
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 1,147 bytes | 
| コンパイル時間 | 807 ms | 
| コンパイル使用メモリ | 82,432 KB | 
| 実行使用メモリ | 93,952 KB | 
| 最終ジャッジ日時 | 2024-07-20 00:54:50 | 
| 合計ジャッジ時間 | 28,582 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge3 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | AC * 21 TLE * 2 -- * 4 | 
ソースコード
from bisect import bisect_left
def rmq_update(t, i, val, f=min):
	t[i + len(t) // 2] = val
	i = (i + len(t) // 2) // 2
	while i > 0:
		t[i] = f(t[i * 2], t[i * 2 + 1])
		i //= 2
def rmq_query(t, l, r, f=min, def_val=0x7fffffff):
	i, j, a, b = l + len(t) // 2, r + len(t) // 2, def_val, def_val
	while i < j:
		if i % 2 != 0: a = f(a, t[i]); i += 1
		if j % 2 != 0: j -= 1; b = f(b, t[j])
		i, j = i // 2, j // 2
	return f(a, b)
N, Q = map(int, input().split())
s = input().strip()
p = [0] * N
st = []
for i, x in enumerate(s):
	if x == '(':
		st.append(i)
	else:
		p[i] = st[-1]
		p[st[-1]] = i
		st.pop()
a = [(i, p[i]) for i, x in enumerate(s) if x == '(']
t1, t2 = [N] * (N * 2), [-1] * (N * 2)
for i, x in enumerate(p):
	rmq_update(t1, i, x, min)
	rmq_update(t2, i, x, max)
for _ in range(Q):
	x, y = map(int, input().split())
	x -= 1; y -= 1
	if x > y: x, y = y, x
	l = min(rmq_query(t1, x, y + 1, min, N), x)
	r = max(rmq_query(t2, x, y + 1, max, 0), y)
	i = bisect_left(a, (l, r))
	while i < len(a) and i >= 0:
		if a[i][0] <= l and a[i][1] >= r: break
		i -= 1
	if i < 0 or i >= len(a): print(-1)
	else: print(a[i][0] + 1, a[i][1] + 1)
            
            
            
        
            
Wizist