Buggy python submission (verdict: Time Limit Exceeded):
from collections import deque
def sol():
    n,k=map(int,input().split())
    p=list(map(int,input().split()))
    minp=[0]*(n-k+1)
    maxp=[0]*(n-k+1)
    q1=deque([0])
    q2=deque([0])
    for i in range(1,k):
        while p[q1[-1]]>p[i]:
            q1.pop()
            if len(q1)==0:
                break
        while p[q2[-1]]<p[i]:
            q2.pop()
            if len(q2)==0:
                break
        q1.append(i)
        q2.append(i)
    for i in range(n-k+1):
        minp[i]=p[q1[0]]
        maxp[i]=p[q2[0]]
        if i==n-k:
            break
        if q1[0]==i:
            q1.popleft()
        if q2[0]==i:
            q2.popleft()
        while p[q1[-1]]>p[i+k]:
            q1.pop()
            if len(q1)==0:
                break
        while p[q2[-1]]<p[i+k]:
            q2.pop()
            if len(q2)==0:
                break
        q1.append(i+k)
        q2.append(i+k)

    d=[False]*(n-k+1)
    d[0]=all(p[i]<p[i+1] for i in range(k-1))
    i=1
    while i<n-k+1:
        if p[i+k-2]>p[i+k-1]:
            i+=k-1
        else:
            if d[i-1]:
                d[i]=True
            else:
                if p[i]<p[i+1]:
                    d[i]=all(p[j]<p[j+1] for j in range(i,i+k-1))
            i+=1

    ans=int(any(d))
    if not d[0]:
        ans+=1
    for i in range(n-k):
        if d[i+1]:
            continue
        if not (p[i]==minp[i] and p[i+k]==maxp[i+1]):
            ans+=1

    print(ans)
sol()

Fixed submission:
from collections import deque
n,k=map(int,input().split())
p=list(map(int,input().split()))

minp=[0]*(n-k+1)
maxp=[0]*(n-k+1)
q1=deque([0])
q2=deque([0])
for i in range(1,k):
    while p[q1[-1]]>p[i]:
        q1.pop()
        if len(q1)==0:
            break
    while p[q2[-1]]<p[i]:
        q2.pop()
        if len(q2)==0:
            break
    q1.append(i)
    q2.append(i)
for i in range(n-k+1):
    minp[i]=p[q1[0]]
    maxp[i]=p[q2[0]]
    if i==n-k:
        break
    if q1[0]==i:
        q1.popleft()
    if q2[0]==i:
        q2.popleft()
    while p[q1[-1]]>p[i+k]:
        q1.pop()
        if len(q1)==0:
            break
    while p[q2[-1]]<p[i+k]:
        q2.pop()
        if len(q2)==0:
            break
    q1.append(i+k)
    q2.append(i+k)

d=[0]*n
d[0]=1
for i in range(1,n):
    if p[i]>p[i-1]:
        d[i]=d[i-1]+1
    else:
        d[i]=1

ans=int(k in d)
if d[k-1]!=k:
    ans+=1
for i in range(n-k):
    if d[i+k]>=k:
        continue
    if not (p[i]==minp[i] and p[i+k]==maxp[i+1]):
        ans+=1

print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
from collections import deque
n,k=map(int,input().split())
p=list(map(int,input().split()))
minp=[0]*(n-k+1)
maxp=[0]*(n-k+1)
q1=deque([0])
q2=deque([0])
for i in range(1,k):
    while p[q1[-1]]>p[i]:
        q1.pop()
        if len(q1)==0:
            break
    while p[q2[-1]]<p[i]:
        q2.pop()
        if len(q2)==0:
            break
    q1.append(i)
    q2.append(i)
for i in range(n-k+1):
    minp[i]=p[q1[0]]
    maxp[i]=p[q2[0]]
    if i==n-k:
        break
    if q1[0]==i:
        q1.popleft()
    if q2[0]==i:
        q2.popleft()
    while p[q1[-1]]>p[i+k]:
        q1.pop()
        if len(q1)==0:
            break
    while p[q2[-1]]<p[i+k]:
        q2.pop()
        if len(q2)==0:
            break
    q1.append(i+k)
    q2.append(i+k)

d=[False]*(n-k+1)
d[0]=all(p[i]<p[i+1] for i in range(k-1))
i=1
while i<n-k+1:
    if p[i+k-2]>p[i+k-1]:
        i+=k-1
    else:
        if d[i-1]:
            d[i]=True
        else:
            if p[i]<p[i+1]:
                d[i]=all(p[j]<p[j+1] for j in range(i,i+k-1))
        i+=1

ans=int(any(d))
if not d[0]:
    ans+=1
for i in range(n-k):
    if d[i+1]:
        continue
    if not (p[i]==minp[i] and p[i+k]==maxp[i+1]):
        ans+=1

print(ans)

Fixed submission:
from collections import deque
n,k=map(int,input().split())
p=list(map(int,input().split()))

minp=[0]*(n-k+1)
maxp=[0]*(n-k+1)
q1=deque([0])
q2=deque([0])
for i in range(1,k):
    while p[q1[-1]]>p[i]:
        q1.pop()
        if len(q1)==0:
            break
    while p[q2[-1]]<p[i]:
        q2.pop()
        if len(q2)==0:
            break
    q1.append(i)
    q2.append(i)
for i in range(n-k+1):
    minp[i]=p[q1[0]]
    maxp[i]=p[q2[0]]
    if i==n-k:
        break
    if q1[0]==i:
        q1.popleft()
    if q2[0]==i:
        q2.popleft()
    while p[q1[-1]]>p[i+k]:
        q1.pop()
        if len(q1)==0:
            break
    while p[q2[-1]]<p[i+k]:
        q2.pop()
        if len(q2)==0:
            break
    q1.append(i+k)
    q2.append(i+k)

d=[0]*n
d[0]=1
for i in range(1,n):
    if p[i]>p[i-1]:
        d[i]=d[i-1]+1
    else:
        d[i]=1

ans=int(k in d)
if d[k-1]!=k:
    ans+=1
for i in range(n-k):
    if d[i+k]>=k:
        continue
    if not (p[i]==minp[i] and p[i+k]==maxp[i+1]):
        ans+=1

print(ans)

Buggy python submission (verdict: Time Limit Exceeded):
from collections import deque
n,k=map(int,input().split())
p=list(map(int,input().split()))
minp=[0]*(n-k+1)
maxp=[0]*(n-k+1)
q1=deque([0])
q2=deque([0])
for i in range(1,k):
    while p[q1[-1]]>p[i]:
        q1.pop()
        if len(q1)==0:
            break
    while p[q2[-1]]<p[i]:
        q2.pop()
        if len(q2)==0:
            break
    q1.append(i)
    q2.append(i)
for i in range(n-k+1):
    minp[i]=p[q1[0]]
    maxp[i]=p[q2[0]]
    if i==n-k:
        break
    if q1[0]==i:
        q1.popleft()
    if q2[0]==i:
        q2.popleft()
    while p[q1[-1]]>p[i+k]:
        q1.pop()
        if len(q1)==0:
            break
    while p[q2[-1]]<p[i+k]:
        q2.pop()
        if len(q2)==0:
            break
    q1.append(i+k)
    q2.append(i+k)

d=[False]*(n-k+1)
d[0]=all(p[i]<p[i+1] for i in range(k-1))
i=1
while i<n-k+1:
    if p[i+k-2]>p[i+k-1]:
        i+=k-1
    else:
        if d[i-1]:
            d[i]=True
        else:
            if p[i]<p[i+1]:
                d[i]=all(p[j]<p[j+1] for j in range(i,i+k-1))
        i+=1

ans=int(any(d))
if not d[0]:
    ans+=1
for i in range(n-k):
    if d[i+1]:
        continue
    if not (p[i]==minp[i] and p[i+k]==maxp[i+1]):
        ans+=1

print(ans)

Fixed submission:
from collections import deque
n,k=map(int,input().split())
p=list(map(int,input().split()))

minp=[0]*(n-k+1)
maxp=[0]*(n-k+1)
q1=deque([0])
q2=deque([0])
for i in range(1,k):
    while p[q1[-1]]>p[i]:
        q1.pop()
        if len(q1)==0:
            break
    while p[q2[-1]]<p[i]:
        q2.pop()
        if len(q2)==0:
            break
    q1.append(i)
    q2.append(i)
for i in range(n-k+1):
    minp[i]=p[q1[0]]
    maxp[i]=p[q2[0]]
    if i==n-k:
        break
    if q1[0]==i:
        q1.popleft()
    if q2[0]==i:
        q2.popleft()
    while p[q1[-1]]>p[i+k]:
        q1.pop()
        if len(q1)==0:
            break
    while p[q2[-1]]<p[i+k]:
        q2.pop()
        if len(q2)==0:
            break
    q1.append(i+k)
    q2.append(i+k)

d=[0]*n
d[0]=1
for i in range(1,n):
    if p[i]>p[i-1]:
        d[i]=d[i-1]+1
    else:
        d[i]=1

ans=int(k in d)
if d[k-1]!=k:
    ans+=1
for i in range(n-k):
    if d[i+k]>=k:
        continue
    if not (p[i]==minp[i] and p[i+k]==maxp[i+1]):
        ans+=1

print(ans)