結果
問題 | No.2495 Three Sets |
ユーザー | prin_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 |
ソースコード
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)