Help me in solving CANDY1P problem

My issue

why does this show partially correct?

My code

t = int(input())
for _ in range(t):
    n = int(input())
    a = list(map(int,input().split()))
    x = list(map(int,input().split()))
    dp1 = []
    dp2 = []
    for i in range(n):
        if x[i] == 0:
            if len(dp1) == 0:
                dp1.append(a[i])
            else:
                dp1.append(max(a[i],a[i]+dp1[-1]))
        else:
            if len(dp2) == 0:
                dp2.append(a[i])
            else:
                dp2.append(max(a[i],a[i]+dp2[-1]))
    print(max(max(dp1),max(dp2)))

Learning course: Dynamic programming
Problem Link: CodeChef: Practical coding for everyone