Problem p04013 (python)

Fixed submission:
import sys

n,a=map(int, input().split())
cards=list(map(int, input().split()))

integers=[x-a for x in cards]
cards.append(a)
f=max(cards)*n


dp=[[0 for i in range(n+1)] for j in range(2*f+1) ]

for y in range(n+1):
    for x in range(2*f+1):
        if y==0 and x==f:
            dp[x][y]=1
        elif y>0 and (x-integers[y-1]<0 or x-integers[y-1]>2*f):
            dp[x][y]=dp[x][y-1]
        elif y>0 and x-integers[y-1]>=0 and x-integers[y-1]<=2*f:
            dp[x][y]=dp[x-integers[y-1]][y-1]+dp[x][y-1]
        else:
            dp[x][y]=0
print(dp[f][n]-1)

Buggy submission (verdict: Runtime Error):
from collections import deque

n,a=map(int,input().split())
cards=list(map(int,input().split()))


noz=[x-a for x in cards].count(0)
pl=[x-a for x in cards if x-a>0]
nl=[a-x for x in cards if x-a<0]
sl=[pl,nl][len(nl)<=len(pl)]
ll=[pl,nl][len(pl)<len(nl)]

sl.sort()
ll.sort()

sumfunc = lambda n, l: sum([l[x]*((n>>x)&1) for x in range(len(l))])

ssl=sum(sl)
sll=sum(ll)
sumsl=[0 for _ in range(ssl)]
sumll=[0 for _ in range(sll)]
sumsl[sl[-1]-1]=1
sumll[ll[-1]-1]=1
for i in range(1,2**(len(sl)-1)):
    s=sumfunc(i,sl)
    sumsl[s-1]+=1
    sumsl[s+sl[-1]-1]+=1
for i in range(1,2**(len(ll)-1)):
    s=sumfunc(i,ll)
    sumll[s-1]+=1
    sumll[s+ll[-1]-1]+=1
count=sum([x*y for x,y in zip(sumsl, sumll)])
# count=0
# p=sum([not sumsl[-1]<sumfunc(2**i,ll) for i in range(1,len(ll)+1)])
# q=sum([sumsl[0]>=sumfunc(2**i-1,ll) for i in range(1,len(ll)+1)])
# count=[sumfunc(j,ll) in sumsl for j in range(2**q-1,2**p)].count(True)

print((count+1)*(2**noz)-1)

Buggy submission (verdict: Runtime Error):
from collections import deque

n,a=map(int,input().split())
cards=list(map(int,input().split()))


noz=[x-a for x in cards].count(0)
pl=[x-a for x in cards if x-a>0]
nl=[a-x for x in cards if x-a<0]
sl=[pl,nl][len(nl)<=len(pl)]
ll=[pl,nl][len(pl)<len(nl)]

sl.sort()
ll.sort()

sumfunc = lambda n, l: sum([l[x]*((n>>x)&1) for x in range(len(l))])

sumsl=[sumfunc(i,sl) for i in range(1,2**len(sl))]
sumll=[sumfunc(i,ll) for i in range(1,2**len(ll))]

# count=0
# p=sum([not sumsl[-1]<sumfunc(2**i,ll) for i in range(1,len(ll)+1)])
# q=sum([sumsl[0]>=sumfunc(2**i-1,ll) for i in range(1,len(ll)+1)])
# count=[sumfunc(j,ll) in sumsl for j in range(2**q-1,2**p)].count(True)
count=0
count=sum([x==y for x in sumsl for y in sumlll])

print((count+1)*(2**noz)-1)

Buggy submission (verdict: Runtime Error):
from collections import deque

n,a=map(int,input().split())
cards=list(map(int,input().split()))


noz=[x-a for x in cards].count(0)
pl=[x-a for x in cards if x-a>0]
nl=[a-x for x in cards if x-a<0]
sl=[pl,nl][len(nl)<=len(pl)]
ll=[pl,nl][len(pl)<len(nl)]

sl.sort()
ll.sort()

sumfunc = lambda n, l: sum([l[x]*((n>>x)&1) for x in range(len(l))])

sumsl=[sumfunc(i,sl) for i in range(1,2**len(sl))]

count=0
p=sum([not sumsl[-1]<sumfunc(2**i,ll) for i in range(1,len(ll)+1)])
q=sum([sumsl[0]>=sumfunc(2**i-1,ll) for i in range(1,len(ll)+1)])

count=[sumfunc(j,ll) in sumsl for j in range(2**q-1,2**p)].count(True)

print((count+1)*(2**noz)-1)

Buggy submission (verdict: Runtime Error):
from collections import deque

n,a=map(int,input().split())
cards=list(map(int,input().split()))


noz=[x-a for x in cards].count(0)
pl=[x-a for x in cards if x-a>0]
nl=[a-x for x in cards if x-a<0]
sl=[pl,nl][len(nl)<=len(pl)]
ll=[pl,nl][len(pl)<len(nl)]

sl.sort()
ll.sort()

nsl=len(sl)
nll=len(ll)

sumsl=[sum([sl[x]*((i>>x)&1) for x in range(nsl)]) for i in range(1,2**nsl)]
# print(sl,ll,sumsl)
count=0
for i in range(1,nll+1):
    if sumsl[-1]< sum([ll[x]*(((2**i)>>x)&1) for x in range(nll)]):
        continue

count=[sum([ll[x]*((j>>x)&1) for x in range(nll)]) in sumsl for j in range(1,2**i)].count(True)

print((count+1)*(2**noz)-1)

Buggy submission (verdict: Runtime Error):
from collections import deque

n,a=map(int,input().split())
cards=list(map(int,input().split()))


noz=[x-a for x in cards].count(0)
pl=[x-a for x in cards if x-a>0]
nl=[a-x for x in cards if x-a<0]
sl=[pl,nl][len(nl)<=len(pl)]
ll=[pl,nl][len(pl)<len(nl)]

sl.sort()
ll.sort()

nsl=len(sl)
nll=len(ll)

sumsl=[sum([sl[x]*((i>>x)&1) for x in range(nsl)]) for i in range(1,2**nsl)]
# print(sl,ll,sumsl)
count=0
for i in range(1,nll+1):
    if sumsl[-1]< sum([ll[x]*(((2**i)>>x)&1) for x in range(nll)]):
        continue

for j in range(1,2**i):
    s=sum([ll[x]*((j>>x)&1) for x in range(nll)])
    count+=(s in sumsl)

print((count+1)*(2**noz)-1)

Buggy submission (verdict: Runtime Error):
from collections import deque

n,a=map(int,input().split())
cards=list(map(int,input().split()))

def is2power(n):
    if n==1:
        return True 
    if n%1==1:
        return False
    else:
        is2power(n//2)

noz=[x-a for x in cards].count(0)
pl=[x-a for x in cards if x-a>0]
nl=[a-x for x in cards if x-a<0]
sl=[pl,nl][len(nl)<=len(pl)]
ll=[pl,nl][len(pl)<len(nl)]

sl.sort()
ll.sort()

nsl=len(sl)
nll=len(ll)

sumsl=[sum([sl[x]*((i>>x)&1) for x in range(nsl)]) for i in range(1,2**nsl)]

count=0
for i in range(1,2**nll):
    s=sum([ll[x]*((i>>x)&1) for x in range(nll)])
    if is2power(i) and s>sumsl[-1]:
        continue
    count+=(s in sumsl)

print((count+1)*(2**noz)-1)

Buggy submission (verdict: Runtime Error):
from collections import deque

n,a=map(int,input().split())
cards=list(map(int,input().split()))

def is2power(n):
    if n==1:
        return True 
    if n%1==1:
        return False
    else:
        is2power(n//2)

noz=[x-a for x in cards].count(0)
pl=[x-a for x in cards if x-a>0]
nl=[a-x for x in cards if x-a<0]
sl=[pl,nl][len(nl)<=len(pl)]
ll=[pl,nl][len(pl)<len(nl)]

sl.sort()
ll.sort()

nsl=len(sl)
nll=len(ll)

sumsl=[]
for i in range(1,2**nsl):
    sumsl.append(sum([sl[x]*((i>>x)&1) for x in range(nsl)]))

count=0
for i in range(1,2**nll):
    s=sum([ll[x]*((i>>x)&1) for x in range(nll)])
    if is2power(i) and s>sumsl[-1]:
        continue
    count+=(s in sumsl)

print((count+1)*(2**noz)-1)