Problem p03013 (python)

Fixed submission:
N,M=map(int,input().split())
a=list(int(input())for _ in range(M))
L=[1 for i in range(N+1)]
dp=[0 for _ in range(N+1)]
#L[0]=0
dp[0]=1
mod=1000000007
for j in a:
    L[j]=0
for i in range(1,N+1):
    if i>=2:
        dp[i]=(dp[i-1]*L[i-1]+dp[i-2]*L[i-2])*L[i]

    elif i==1:
        dp[i]=1
    dp[i]%=mod

print(dp[N])

Buggy submission (verdict: Runtime Error):
N,M=map(int,input().split())
a=list(int(input()) for _ in range(M) )
ans=0
ansn1=0
ansn2=0
mod=1000000007
A=a[0]
for i in range(N):

    if i>=2 and  i+1 < A:
        ans=(ansn1+ansn2)%mod
        ansn2 = ansn1
        ansn1=ans
        continue

    elif i>=2 and  i+1 > A:
        ans=(ansn1+ansn2)%mod
        ansn2 = ansn1
        ansn1=ans
        if a.index(A)+1<=M-1:
            A=a[a.index(A)+1]
        else:
            A=mod
        continue

    elif i+1 == A:
        ans = 0
        ansn2 = ansn1
        ansn1 = ans
        if a.index(A) + 1 <= M - 1:
            A = a[a.index(A) + 1]
        else:
            A=mod
        continue


    if i==0:
        if i+1 not in a:
            ans=1
            ansn2 = 0
            ansn1=ans


    elif i==1:
        if i+1 not in a:
            ans=1+ansn1
            ansn2 = ansn1
            ansn1=ans
        else:
            ans=0
            ansn2=ansn1
            ansn1=ans


print(ans)

Buggy submission (verdict: Runtime Error):
N,M=map(int,input().split())
a=list(int(input()) for _ in range(M) )
ans=0
ansn1=0
ansn2=0
mod=1000000007
A=a[0]
for i in range(N):

    if i>=2 and  i+1 < A:
        ans=(ansn1+ansn2)%mod
        ansn2 = ansn1
        ansn1=ans
        continue

    elif i>=2 and  i+1 > A:
        ans=(ansn1+ansn2)%mod
        ansn2 = ansn1
        ansn1=ans
        if a.index(A)+1<=M-1:
            A=a[a.index(A)+1]
        else:
            A=mod
        continue

    elif i+1 == A:
        ans = 0
        ansn2 = ansn1
        ansn1 = ans
        if a.index(A) + 1 <= M - 1:
            A = a[a.index(A) + 1]
        else:
            A=mod
        continue


    if i==0:
        if i+1 not in a:
            ans=1
            ansn2 = 0
            ansn1=ans


    elif i==1:
        if i+1 not in a:
            ans=1+ansn1
            ansn2 = ansn1
            ansn1=ans
        else:
            ans=0
            ansn2=ansn1
            ansn1=ans


print(ans)

Buggy submission (verdict: Runtime Error):
N,M=map(int,input().split())
a=list(int(input()) for _ in range(M) )
ans=0
ansn1=0
ansn2=0
mod=1000000007
A=a[0]
for i in range(N):

    if i>=2 and  i+1 < A:
        ans=(ansn1+ansn2)%mod
        ansn2 = ansn1
        ansn1=ans
        continue
    elif i>=2 and  i+1 > A:
        ans=(ansn1+ansn2)%mod
        ansn2 = ansn1
        ansn1=ans
        if a.index(A)+1<M-1:
            A=a[a.index(A)+1]
        else:
            A=mod
        continue

    elif i+1 == a:
        ans = 0
        ansn2 = ansn1
        ansn1 = ans
        if a.index(A) + 1 < M - 1:
            A = a[a.index(A) + 1]
        else:
            A=mod
        continue


    if i==0:
        if i+1 not in a:
            ans=1
            ansn2 = 0
            ansn1=ans

    elif i==1:
        if i+1 not in a:
            ans=1+ansn1
            ansn2 = ansn1
            ansn1=ans
        else:
            ans=0
            ansn2=ansn1
            ansn1=ans


print(ans)