ARC 074 D 3N Numbers【Python】

問題はこちら

import sys
readline = sys.stdin.readline

def main():
   from heapq import heapify, heappop, heappush
   
   N = int(readline())
   a = list(map(int, readline().split()))
   
   red = a[:N]
   blue = list(map(lambda x: -x, a[2*N:]))
   ans_red = [0]*(N + 1); ans_blue = [0]*(N + 1)
   heapify(red); heapify(blue)
   ans_red[0], ans_blue[0] = sum(red), sum(blue)
   for k in range(1, N + 1):
       heappush(red, a[k + N - 1])
       ans_red[k] = ans_red[k - 1] + a[k + N - 1]
       sub_red = heappop(red)
       ans_red[k] -= sub_red
       heappush(blue, -a[2*N - k])
       ans_blue[k] = ans_blue[k - 1] - a[2*N - k]
       sub_blue = heappop(blue)
       ans_blue[k] -= sub_blue
   
   ans = -float('inf')
   for k in range(N + 1):
       ans = max(ans, ans_red[k] + ans_blue[N - k])
   print(ans)
   
if __name__ == "__main__":
   main()


この記事が気に入ったらサポートをしてみませんか?