結果
問題 |
No.2617 容量3のナップザック
|
ユーザー |
👑 |
提出日時 | 2023-12-19 22:06:40 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,049 ms / 2,000 ms |
コード長 | 464 bytes |
コンパイル時間 | 346 ms |
コンパイル使用メモリ | 82,612 KB |
実行使用メモリ | 310,436 KB |
最終ジャッジ日時 | 2024-09-27 11:11:52 |
合計ジャッジ時間 | 13,714 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 40 |
ソースコード
R=range N,K,s,a,b,m=map(int,input().split()) f=[s] for i in R(2*N):f+=[(a*f[-1]+b)%m] v=[[-9**18]for w in R(3)] for i in R(N):v[f[i]%3]+=[-(f[i]%3+1)*f[i+N]] for w in R(3): u=v[w] u.sort() u[0],b=0,len(u) for i in R(1,b):u[i]=u[i-1]-u[i] while b<3*K+3: u+=[u[-1]] b+=1 a=v[2][K] for k in R(K): b=K-k l,r=0,b+1 while l<r-1: m=(l+r)//2 if v[1][m]-v[1][m-1]<v[0][3*b-2*m+2]-v[0][3*b-2*m]:r=m else:l=m a=max(a,v[2][k]+v[1][l]+v[0][3*b-2*l]) print(a)