leeway00 / CodingTestPractice

0 stars 0 forks source link

Array Manipulation #3

Open leeway00 opened 2 years ago

leeway00 commented 2 years ago
def arrayManipulation(n, queries):
    # Write your code here
    plus, minus, values = [*zip(*queries)]
    # plus, minus = deque(plus), deque(minus)
    plus = sorted([*zip(plus, values)], key = lambda x: x[0])
    minus = sorted([*zip(minus, values)], key = lambda x: x[0])
    n = len(plus)
    maximum = 0
    current = 0
    plus_ind = 0
    minus_ind = 0
    while minus_ind < n:
        if plus_ind < n and plus[min(plus_ind,n-1)][0] <= minus[minus_ind][0]:
            current += plus[plus_ind][1] # value added after plus[plus_ind]
            plus_ind +=1
        else: # value decreased after minus[minus_ind]
            current -= minus[minus_ind][1]
            minus_ind +=1
        maximum = max(current, maximum)
    return maximum