結果
問題 | No.2495 Three Sets |
ユーザー |
![]() |
提出日時 | 2024-03-10 15:44:02 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,188 ms / 3,000 ms |
コード長 | 1,014 bytes |
コンパイル時間 | 154 ms |
コンパイル使用メモリ | 82,096 KB |
実行使用メモリ | 102,784 KB |
最終ジャッジ日時 | 2024-09-29 21:38:38 |
合計ジャッジ時間 | 19,070 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 |
ソースコード
Na, Nb, Nc = map(int, input().split())A = list(map(int, input().split()))B = list(map(int, input().split()))C = list(map(int, input().split()))geta = 3005def f(X):Dn, Ds = [0] * (2 * geta), [0] * (2 * geta)Xn, Xs = [0] * (2 * geta), [0] * (2 * geta)for x in X:Dn[x + geta] += 1Ds[x + geta] += xfor i in range(2 * geta-1):Xn[i + 1] = Xn[i] + Dn[i]Xs[i + 1] = Xs[i] + Ds[i]return Xn, XsAn, As = f(A)Bn, Bs = f(B)Cn, Cs = f(C)ans = 0for b in range(2 * geta):bn = Bn[-1] - Bn[b]bs = Bs[-1] - Bs[b]for c in range(2 * geta):cn = Cn[-1] - Cn[c]cs = Cs[-1] - Cs[c]if bn == 0:ans = max(ans, cs * Na)else:v = (-cs)//bn + 1if v >= geta:n = s = 0else:n = An[-1] - An[max(0, v + geta)]s = As[-1] - As[max(0, v + geta)]ans = max(ans, s * bn + bs * cn + cs * n)print(ans)