• + 5 comments

    Same solution but optimized:

    from itertools import accumulate
    
    n, m = map(int, input().split(' '))
    dx = [0] * (n + 1) # allow run past end
    
    for _ in range(m):
        a, b, c = map(int, input().split(' '))
        dx[a - 1] += c
        dx[b] -= c
    
    print(max(accumulate(dx)))
    
    • + 0 comments

      That's so good! You are awesome!

    • + 1 comment

      can you explain why it's (n+1) and not (n)?

      • + 0 comments

        The question asks for a 1 indexed list and the a,b values read in are read in starting from 1 not 0. If you do not use (n+1)if b happens to be the last number of your list it will go out of bounds.

        The 0 index value will always be 0 so it doesn't affect your answer when you sum for max difference.

    • + 1 comment

      why are you subtracting dx[b] -= c ?????

      • + 0 comments

        Walk through the array it may help.

        Query 1 -> [1, 2, 100] Array 1 -> [0, 100, 0, -100, 0, 0, 0] Query 2 -> [2, 5, 100] Array 2 -> [0, 100, 100, -100, 0, 0, -100] Query 3 -> [3, 4, 100] Array 3 -> [0, 100, 100, 0, 0, -100, -100] Array Accumulated -> [0, 100, 200, 200, 200, 100, 0] Result -> 200

    • + 0 comments

      The use of accumulate is so brilliant!

    • + 0 comments

      Nice