結果

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

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 92 ms
80,412 KB
testcase_01 AC 95 ms
80,616 KB
testcase_02 AC 93 ms
80,280 KB
testcase_03 AC 93 ms
80,692 KB
testcase_04 AC 91 ms
80,416 KB
testcase_05 AC 94 ms
80,648 KB
testcase_06 AC 94 ms
80,616 KB
testcase_07 AC 92 ms
80,756 KB
testcase_08 AC 92 ms
80,408 KB
testcase_09 AC 112 ms
81,432 KB
testcase_10 AC 118 ms
82,100 KB
testcase_11 AC 118 ms
82,084 KB
testcase_12 AC 120 ms
82,236 KB
testcase_13 AC 163 ms
98,084 KB
testcase_14 AC 201 ms
113,308 KB
testcase_15 AC 163 ms
104,008 KB
testcase_16 AC 236 ms
122,952 KB
testcase_17 AC 237 ms
122,380 KB
testcase_18 AC 92 ms
80,684 KB
testcase_19 AC 183 ms
119,440 KB
testcase_20 AC 178 ms
121,328 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(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))
print(findMax(f, 0, NA))
0