結果

問題 No.3322 引っ張りだこ
コンテスト
ユーザー 高橋ゆに
提出日時 2025-04-18 21:52:47
言語 PyPy3
(7.3.15)
結果
RE  
実行時間 -
コード長 710 bytes
コンパイル時間 145 ms
コンパイル使用メモリ 82,280 KB
実行使用メモリ 67,368 KB
最終ジャッジ日時 2025-10-31 20:30:16
合計ジャッジ時間 5,219 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other RE * 43
権限があれば一括ダウンロードができます

ソースコード

diff #

N, K = map(int, input().split())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
    
def alien_dp(l):
    dpa = (0, 0)
    dpb = (-INF, 0)
    for i in range(N):
        ndpa = max((dpa[0] + A[i], dpa[1]), (dpb[0] + A[i] - l, dpb[1] - 1))
        ndpb = max((dpa[0] + B[i], dpa[1]), (dpb[0] + B[i], dpb[1]))
        dpa = ndpa
        dpb = ndpb
    score, cnt = max(dpa, dpb)
    cnt = -cnt
    return score, cnt

score, cnt = alien_dp(0)
if cnt <= K:
    print(score)
    exit()
    
ng, ok = 0, INF
while ok - ng > 1:
    med = (ok + ng) // 2
    score, cnt = alien_dp(med)
    if cnt > K:
        ng = med
    else:
        ok = med

score, cnt = alien_dp(ok)
print(score + ok * K)
0