data structures two pointers

Please click on ads to support us..

Python Code:

t = int(input())

bEle = [None for _ in range(10**6+1)]
for _ in range(t):
    n,m,k = map(int,input().split())

    a = [int(x) for x in input().split()]
    b = [int(x) for x in input().split()]

    for i in range(m):
        if bEle[b[i]]==None:
            bEle[b[i]] = 1
        else:
            bEle[b[i]] += 1
    
    count = 0
    ans = 0
    for i in range(m):
        if bEle[a[i]]!=None:
            bEle[a[i]] -=1
            if bEle[a[i]]>=0:
                count+=1
    
    if count>=k:
        ans+=1
        for i in range(m,n):
        if bEle[a[i-m]]!=None:
            bEle[a[i-m]] += 1
            if bEle[a[i-m]]>0:
                count-=1
        if bEle[a[i]]!=None:
            bEle[a[i]]-=1
            if bEle[a[i]]>=0:
                count+=1
        if count>=k:
            ans+=1
    
    for i in range(m):
        bEle[b[i]] = None
    
    print(ans)


Comments

Submit
0 Comments
More Questions

237A - Free Cash
1615B - And It's Non-Zero
1619E - MEX and Increments
34B - Sale
1436A - Reorder
1363C - Game On Leaves
1373C - Pluses and Minuses
1173B - Nauuo and Chess
318B - Strings of Power
1625A - Ancient Civilization
864A - Fair Game
1663B - Mike's Sequence
448A - Rewards
1622A - Construct a Rectangle
1620A - Equal or Not Equal
1517A - Sum of 2050
620A - Professor GukiZ's Robot
1342A - Road To Zero
1520A - Do Not Be Distracted
352A - Jeff and Digits
1327A - Sum of Odd Integers
1276A - As Simple as One and Two
812C - Sagheer and Nubian Market
272A - Dima and Friends
1352C - K-th Not Divisible by n
545C - Woodcutters
1528B - Kavi on Pairing Duty
339B - Xenia and Ringroad
189A - Cut Ribbon
1182A - Filling Shapes