結果
問題 |
No.2495 Three Sets
|
ユーザー |
👑 |
提出日時 | 2023-09-05 18:22:06 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,889 ms / 3,000 ms |
コード長 | 624 bytes |
コンパイル時間 | 323 ms |
コンパイル使用メモリ | 82,416 KB |
実行使用メモリ | 107,940 KB |
最終ジャッジ日時 | 2024-06-24 03:12:21 |
合計ジャッジ時間 | 11,123 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 |
ソースコード
R=range I=lambda:list(map(int,input().split())) N=I() B=3000 W=6002 L=[] S=[] U=[] C=[B] for n in R(3): S+=[[0]] U+=[[0]] L+=[1] X=I() A={-B:0} for x in X:A[-x]=A[-x]+1if -x in A else 1 for a in sorted(A): S[n]+=[S[n][L[n]-1]+A[a]] U[n]+=[U[n][L[n]-1]-a*A[a]] if n>1:C+=[-a] L[n]+=1 X=[] for x in R(W): a=l=0 r=L[2] while l+1<r: m=(l+r)//2 if C[m]>=x-B:l=m else:r=m X+=[l] for i in R(L[0]): for j in R(L[1]): if U[1][j]+B*S[0][i]>=0: if S[0][i]<1:m=L[2]-1 else: r=max(0,-(U[1][j]//S[0][i])+B) m=[0,X[r]][r<W] if m:a=max(a,U[0][i]*S[1][j]+U[1][j]*S[2][m]+U[2][m]*S[0][i]) print(a)