結果

問題 No.3537 Thank You!
コンテスト
ユーザー gomaazarasi
提出日時 2026-04-01 09:30:00
言語 PyPy3
(7.3.17)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
AC  
実行時間 452 ms / 2,000 ms
コード長 881 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 340 ms
コンパイル使用メモリ 85,248 KB
実行使用メモリ 114,304 KB
最終ジャッジ日時 2026-05-08 20:55:41
合計ジャッジ時間 6,761 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge2_1
このコードへのチャレンジ
(要ログイン)
サブタスク 配点 結果
サブタスク1 30 % AC * 21
サブタスク2 70 % AC * 15
合計 2.5 * 100% = 250 点
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code


n = int(input())
b = int(input())
c = list(map(int,input().split()))
s = list(map(int,input().split()))
x = [[c[i],s[i],i] for i in range(n)]
x.sort()
a = [x[i][0]*x[i][1] for i in range(n)]
ans = 0

for i in range(n-1):
    x[i+1][1] += x[i][1]
    a[i+1] += a[i]

for i in range(n):
    l,r = -1,n
    u = x[i][2]
    bb = b-s[u]
    cc = min(b,s[u])
    
    if bb <= 0:
        ans = max(ans,cc)
        continue
    
    while r-l > 1:
        mid = (l+r)//2
        
        if i <= mid:
            z = c[u]*s[u]
        else:
            z = 0
        
        if a[mid]-z <= bb:
            l = mid
        else:
            r = mid
    
    if i <= l:
        z = s[u]
    else:
        z = 0
    
    if l >= 0:
        cc += x[l][1]-z
        z *= c[u]
        
        bb -= a[l]-z
    
    if r != n:
        cc += bb//x[r][0]
    
    ans = max(ans,cc)

print(ans)
0