結果
| 問題 | No.3537 Thank You! |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-04-01 09:24:40 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 850 bytes |
| 記録 | |
| コンパイル時間 | 480 ms |
| コンパイル使用メモリ | 85,888 KB |
| 実行使用メモリ | 114,432 KB |
| 最終ジャッジ日時 | 2026-05-08 20:55:36 |
| 合計ジャッジ時間 | 6,668 ms |
|
ジャッジサーバーID (参考情報) |
judge1_0 / judge3_0 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| サブタスク1 | 30 % | AC * 18 WA * 3 |
| サブタスク2 | 70 % | AC * 15 |
| 合計 | 2.5 * 70% = 175 点 |
ソースコード
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
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)