結果
| 問題 | No.3537 Thank You! |
| コンテスト | |
| ユーザー |
titia
|
| 提出日時 | 2026-05-09 05:59:45 |
| 言語 | PyPy3 (7.3.17) |
| 結果 |
AC
|
| 実行時間 | 263 ms / 2,000 ms |
| コード長 | 1,050 bytes |
| 記録 | |
| コンパイル時間 | 240 ms |
| コンパイル使用メモリ | 85,108 KB |
| 実行使用メモリ | 115,712 KB |
| 最終ジャッジ日時 | 2026-05-09 05:59:51 |
| 合計ジャッジ時間 | 5,512 ms |
|
ジャッジサーバーID (参考情報) |
judge2_0 / judge3_1 |
(要ログイン)
| サブタスク | 配点 | 結果 |
|---|---|---|
| サブタスク1 | 30 % | AC * 21 |
| サブタスク2 | 70 % | AC * 15 |
| 合計 | 2.5 * 100% = 250 点 |
ソースコード
import sys
input = sys.stdin.readline
from bisect import bisect
N=int(input())
B=int(input())
C=list(map(int,input().split()))
S=list(map(int,input().split()))
A=[]
for i in range(N):
A.append((C[i],S[i]))
A.sort()
SUM=[0]
SUMko=[0]
for c,s in A:
SUM.append(SUM[-1]+c*s)
SUMko.append(SUMko[-1]+s)
ANS=0
for i in range(N):
c,s=A[i]
k=bisect(SUM,B-1*s)
#print(B-1*s,k)
if i<k-1:
B2=B-s+c*s
k=bisect(SUM,B2)
score=SUMko[k-1]
rest=B-s-SUM[k-1]
if k-1<len(A):
necc,necs=A[k-1]
score+=min(necs,rest//necc)
ANS=max(ANS,score)
else:
k=bisect(SUM,B-1*min(B,s))
score=SUMko[k-1]+min(B,s)
rest=B-min(B,s)-SUM[k-1]
if i!=k-1:
if k-1<len(A):
necc,necs=A[k-1]
score+=min(necs,rest//necc)
else:
if k<len(A):
necc,necs=A[k]
score+=min(necs,rest//necc)
ANS=max(ANS,score)
print(ANS)
titia