提出 #3974012


ソースコード 拡げる

N = int(input())
*H, = map(int, input().split())
*A, = map(int, input().split())

N0 = 2**(N).bit_length()
INF = 2**31-1
data = [-INF]*(2*N0)
def update(k, x):
    k += N0-1
    data[k] = x
    while k >= 0:
        k = (k - 1) // 2
        data[k] = max(data[2*k+1], data[2*k+2])
def query(l, r):
    L = l + N0; R = r + N0
    s = -INF
    while L < R:
        if R & 1:
            R -= 1
            s = max(s, data[R-1])

        if L & 1:
            s = max(s, data[L-1])
            L += 1
        L >>= 1; R >>= 1
    return s

*I, = range(N)
I.sort(key=lambda x: (H[x], x))
ans = 0
update(0, 0)
for i in I:
    v = query(0, i+1) + A[i]
    ans = max(ans, v)
    update(i+1, v)
print(ans)

提出情報

提出日時
問題 Q - Flowers
ユーザ yaketake08
言語 PyPy3 (2.4.0)
得点 100
コード長 732 Byte
結果 AC
実行時間 1333 ms
メモリ 128664 KiB

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 22
セット名 テストケース
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11, 1_12, 1_13, 1_14, 1_15, 1_16, 1_17
ケース名 結果 実行時間 メモリ
0_00 AC 173 ms 38768 KiB
0_01 AC 163 ms 38256 KiB
0_02 AC 166 ms 38256 KiB
0_03 AC 172 ms 38256 KiB
1_00 AC 166 ms 38256 KiB
1_01 AC 616 ms 128664 KiB
1_02 AC 605 ms 123160 KiB
1_03 AC 625 ms 123288 KiB
1_04 AC 812 ms 123160 KiB
1_05 AC 847 ms 123160 KiB
1_06 AC 897 ms 123160 KiB
1_07 AC 911 ms 123160 KiB
1_08 AC 991 ms 123160 KiB
1_09 AC 989 ms 123288 KiB
1_10 AC 1304 ms 122144 KiB
1_11 AC 1297 ms 122264 KiB
1_12 AC 1302 ms 122144 KiB
1_13 AC 1319 ms 123160 KiB
1_14 AC 1279 ms 122264 KiB
1_15 AC 1289 ms 123160 KiB
1_16 AC 1292 ms 123160 KiB
1_17 AC 1333 ms 123160 KiB