1969D - Shop Game - CodeForces Solution


greedy math sortings

Please click on ads to support us..

Python Code:

import sys
input = sys.stdin.readline
import heapq

def readList():
    return list(map(int, input().split()))
def readInt():
    return int(input())
def readInts():
    return map(int, input().split())
def readStr():
    return input().strip()


def solve():
    n, k = readInts()
    a, b = readList(), readList()
    a = sorted([(a[i], b[i]) for i in range(n) if b[i]-a[i] > 0], key=lambda x: -x[1])
    n = len(a)
    if n <= k:
        return 0

    h = []
    ans = 0
    v = sum([a[i][1] - a[i][0] for i in range(n) if i >= k])
    for i in range(n):
        if i < k:
            heapq.heappush(h, -a[i][0])
            v -= a[i][0]
        else:
            ans = max(ans, v)
            v -= a[i][1]
            heapq.heappush(h, -a[i][0])
            ma = heapq.heappop(h)
            v -= ma
    return max(ans, v)







for _ in range(int(input())):
    print(solve())


Comments

Submit
0 Comments
More Questions

577A - Multiplication Table
817C - Really Big Numbers
1355A - Sequence with Digits
977B - Two-gram
993A - Two Squares
1659D - Reverse Sort Sum
1659A - Red Versus Blue
1659B - Bit Flipping
1480B - The Great Hero
1519B - The Cake Is a Lie
1659C - Line Empire
515A - Drazil and Date
1084B - Kvass and the Fair Nut
1101A - Minimum Integer
985D - Sand Fortress
1279A - New Year Garland
1279B - Verse For Santa
202A - LLPS
978A - Remove Duplicates
1304A - Two Rabbits
225A - Dice Tower
1660D - Maximum Product Strikes Back
1513A - Array and Peaks
1251B - Binary Palindromes
768B - Code For 1
363B - Fence
991B - Getting an A
246A - Buggy Sorting
884A - Book Reading
1180A - Alex and a Rhombus