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