結果

問題 No.2495 Three Sets
ユーザー prin_kemkemprin_kemkem
提出日時 2023-10-06 23:31:18
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 241 ms / 3,000 ms
コード長 1,326 bytes
コンパイル時間 229 ms
コンパイル使用メモリ 82,224 KB
実行使用メモリ 122,292 KB
最終ジャッジ日時 2024-07-26 17:09:44
合計ジャッジ時間 4,074 ms
ジャッジサーバーID
(参考情報)
judge5 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 91 ms
80,592 KB
testcase_01 AC 93 ms
80,456 KB
testcase_02 AC 97 ms
81,000 KB
testcase_03 AC 94 ms
80,812 KB
testcase_04 AC 92 ms
80,408 KB
testcase_05 AC 93 ms
80,272 KB
testcase_06 AC 94 ms
80,568 KB
testcase_07 AC 94 ms
80,572 KB
testcase_08 AC 94 ms
80,720 KB
testcase_09 AC 111 ms
81,496 KB
testcase_10 AC 119 ms
82,172 KB
testcase_11 AC 120 ms
82,236 KB
testcase_12 AC 120 ms
81,972 KB
testcase_13 AC 162 ms
97,992 KB
testcase_14 AC 214 ms
113,364 KB
testcase_15 AC 162 ms
103,964 KB
testcase_16 AC 241 ms
122,292 KB
testcase_17 AC 239 ms
122,228 KB
testcase_18 AC 95 ms
80,544 KB
testcase_19 AC 185 ms
119,468 KB
testcase_20 AC 176 ms
121,744 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import defaultdict, deque, Counter
import copy
from itertools import combinations, permutations, product, accumulate, groupby, chain
from heapq import heapify, heappop, heappush
import math
import bisect
from pprint import pprint
from random import randint
import sys
# sys.setrecursionlimit(700000)
input = lambda: sys.stdin.readline().rstrip('\n')
inf = float('inf')
mod1 = 10**9+7
mod2 = 998244353
def ceil_div(x, y): return -(-x//y)

#################################################

def f(k):
    sa = SA[i]
    sb = SB[j]
    sc = SC[k]
    return sa*j + sb*k + sc*i

def f(i):
    def g(j):
        def h(k):
            sa = SA[i]
            sb = SB[j]
            sc = SC[k]
            return sa*j + sb*k + sc*i
        return findMax(h, 0, NC)
    return findMax(g, 0, NB)

def findMax(f, l, r):
    while r-l >= 3:
        c1 = l+(r-l)//3
        c2 = r-(r-l)//3
        if f(c1) > f(c2): r = c2
        else: l = c1
    return max(f(x) for x in range(l, r+1))

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()))
A.sort(reverse=True)
B.sort(reverse=True)
C.sort(reverse=True)

SA = [0]+list(accumulate(A))
SB = [0]+list(accumulate(B))
SC = [0]+list(accumulate(C))

ans = findMax(f, 0, NA)
print(ans)
0