結果

問題 No.2242 Cities and Teleporters
コンテスト
ユーザー detteiuu
提出日時 2026-09-03 21:18:38
言語 PyPy3
(7.3.23 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
実行時間 -
コード長 1,104 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 427 ms
コンパイル使用メモリ 95,960 KB
実行使用メモリ 188,120 KB
最終ジャッジ日時 2026-09-03 21:19:07
合計ジャッジ時間 22,978 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge1_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 10 WA * 16
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

from sys import stdin
input = stdin.readline
from bisect import bisect_left, bisect_right

N = int(input())
H = list(map(int, input().split()))
T = list(map(int, input().split()))
Q = int(input())
query = [list(map(int, input().split())) for _ in range(Q)]

HT = sorted([(H[i], T[i]) for i in range(N)], key=lambda x:x[0])
A, B = map(list, zip(*HT))
for i in range(1, N):
    B[i] = max(B[i-1], B[i])

dp = [[-1]*N]
idx = 0
for i, b in enumerate(B):
    while idx < N and A[idx] <= b:
        idx += 1
    if 1 <= idx:
        dp[-1][i] = idx-1
for _ in range(19):
    dp.append([-1]*N)
    for i in range(N):
        if dp[-2][i] == -1: continue
        dp[-1][i] = dp[-2][dp[-2][i]]

for s, t in query:
    s, t = s-1, t-1
    if H[t] <= T[s]:
        print(1)
        continue
    b = bisect_right(A, T[s])-1
    if b == -1:
        print(-1)
        continue
    gb = bisect_left(A, H[t])
    ans = 1
    for i in reversed(range(20)):
        if dp[i][b] != -1 and dp[i][b] < gb:
            ans += 1<<i
            s = dp[i][b]
    if gb <= dp[i][b]:
        print(ans+1)
    else:
        print(-1)
0