Set Mutations

  • + 0 comments
    A = int(input())
    set_A = set(input().split())
    
    N = int(input())
    
    def upd(origin_set: set, new_set: set):
        origin_set.update(new_set)
    
    def diff_upd(origin_set: set, new_set: set):
        origin_set.difference_update(new_set)
    
    def inters_upd(origin_set: set, new_set: set):
        origin_set.intersection_update(new_set)
    
    def sym_diff_upd_set(origin_set: set, new_set: set):
        origin_set.symmetric_difference_update(new_set)
    
    OPERATIONS= {
        "update": upd,
        "difference_update": diff_upd,
        "intersection_update": inters_upd,
        "symmetric_difference_update": sym_diff_upd_set
    }
    
    for i in range(N):
        opr_name, num = input().split()
        new_set = set(input().split())
        
        func: callable = OPERATIONS[opr_name]
        func(set_A, new_set)
    
    print(sum([int(num) for num in set_A]))