Problem:


Score : 500 points

Problem Statement

We have a grid with H horizontal rows and W vertical columns. Let (i,j) denote the square at the i-th row from the top and the j-th column from the left.

The square (i, j) has two numbers A_{ij} and B_{ij} written on it.

First, for each square, Takahashi paints one of the written numbers red and the other blue.

Then, he travels from the square (1, 1) to the square (H, W). In one move, he can move from a square (i, j) to the square (i+1, j) or the square (i, j+1). He must not leave the grid.

Let the unbalancedness be the absolute difference of the sum of red numbers and the sum of blue numbers written on the squares along Takahashi's path, including the squares (1, 1) and (H, W).

Takahashi wants to make the unbalancedness as small as possible by appropriately painting the grid and traveling on it.

Find the minimum unbalancedness possible.

Constraints

2 \leq H \leq 80

2 \leq W \leq 80

0 \leq A_{ij} \leq 80

0 \leq B_{ij} \leq 80

All values in input are integers.

Input

Input is given from Standard Input in the following format:

H W
A_{11} A_{12} \ldots A_{1W}
:
A_{H1} A_{H2} \ldots A_{HW}
B_{11} B_{12} \ldots B_{1W}
:
B_{H1} B_{H2} \ldots B_{HW}

Output

Print the minimum unbalancedness possible.

Sample Input 1

2 2
1 2
3 4
3 4
2 1

Sample Output 1

0

By painting the grid and traveling on it as shown in the figure below, the sum of red numbers and the sum of blue numbers are 3+3+1=7 and 1+2+4=7, respectively, for the unbalancedness of 0.

Sample Input 2

2 3
1 10 80
80 10 1
1 2 3
4 5 6

Sample Output 2

2



Sample input:
2 2
1 2
3 4
3 4
2 1


Sample output:
0

Submission status: Wrong Answer

Solution code:
import subprocess
import gzip, base64, os
import stat

gz = b'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'
bin = gzip.decompress(base64.b64decode(gz))
p = os.path.dirname(__file__)
pymain = os.path.join(p, "a.out")
with open(pymain, "wb") as f:
    f.write(bin)
os.chmod(pymain, stat.S_IRUSR | stat.S_IWUSR | stat.S_IXUSR)
if p == "":
    pymain = "./" + pymain
subprocess.call(pymain)


# compiled by pythran
'''
#pythran export main2()
import numpy as np
i8 = np.int64
i4 = np.int32

def calc(dp1, dp2, k):
    for i in range(dp1.shape[0] - k):
        dp2[i + k] += dp1[i]
    for i in range(k, dp1.shape[0]):
        dp2[i - k] += dp1[i]
    for i in range(k):
        dp2[k - i] += dp1[i]


def solve(z, dp):
    dp[0, 0, z[0, 0]] = 1
    for x in range(1, z.shape[1]):
        calc(dp[0, x - 1], dp[0, x], z[0, x])
    for y in range(1, z.shape[0]):
        calc(dp[y - 1, 0], dp[y, 0], z[y, 0])
        for x in range(1, z.shape[1]):
            calc(dp[y, x - 1], dp[y, x], z[y, x])
            calc(dp[y - 1, x], dp[y, x], z[y, x])
    for i in range(dp.shape[2]):
        if dp[dp.shape[0] - 1, dp.shape[1] - 1, i] > 0:
            return i
    return -1


def main2():
    stdin = open('/dev/stdin')
    H, W = map(int, stdin.readline().split())
    a = np.empty((H, W), i8)
    b = np.empty((H, W), i8)
    for i in range(H):
        for j, c in enumerate(map(int, stdin.readline().split())):
            a[i, j] = c
    for i in range(H):
        for j, c in enumerate(map(int, stdin.readline().split())):
            b[i, j] = c
    z = np.abs(a - b)
    if H > W:
        z = z.T.copy()
    dp = np.zeros((H, W, 80 * 80 * 80 + 1), i8)
    ans = solve(z, dp)
    print(ans)

'''

Submission status: Wrong Answer

Solution code:
h,w=map(int,input().split())
data=[list(map(int,input().split())) for i in range(h)]
for i in range(h):
    lst=list(map(int,input().split()))
    for j in range(w):
        data[i][j]=abs(data[i][j]-lst[j])
mmm=0
for u in data:
    mmm=max(mmm,max(u))

num=mmm*h*w
dp=[[0]*(num+1) for i in range(w)] 
dp[0][data[0][0]]=1

for i in range(w-1):
    x=data[0][i+1]
    for j in range(num):
        if dp[i][j]==1:
            dp[i+1][abs(j-x)]=1
            dp[i+1][j+x]=1
            
for i in range(1,h):
    h=[[0]*(num+1) for i in range(w)] 
    for j in range(w):
        x=data[i][j]
        for k in range(num):
            if dp[j][k]==1:
                h[j][abs(k-x)]=1
                h[j][k+x]=1
    for j in range(w-1):
        x=data[i][j+1]
        for k in range(num):
            if h[j][k]==1:
                h[j+1][abs(k-x)]=1
                h[j+1][k+x]=1
    dp=h
    
for i in range(num):
    if dp[w-1][i]==1:
        print(i)
        break

Submission status: Wrong Answer

Solution code:
def fold(x,m):
    y = 0
    for _ in range(m):
        if x & 1:
            y |= 1
        y <<= 1
        x >>= 1
    return x|y



h,w = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(h)]
b = [list(map(int, input().split())) for _ in range(h)]
g = [[0]*w for _ in range(h)]
for i in range(h):
  for j in range(w):
    g[i][j] = abs(a[i][j] - b[i][j])
a = b = 0
m = max(max(x) for x in g)

dp = [[0]*(w+1) for _ in range(h+1)]
dp[0][1] = 1
dp[1][0] = 1
for i in range(1,h+1):
  for j in range(1,w+1):
    par = dp[i-1][j] | dp[i][j-1]
    dp[i][j] = (par<<g[i-1][j-1])|fold(par,g[i-1][j-1])
for i in range(m*(h+w+2)):
  if dp[h][w]&(1<<i):
    print(i)
    break

Submission status: Wrong Answer

Solution code:
def fold(x,m):
    y = 0
    for _ in range(m):
        if x & 1:
            y |= 1
        y <<= 1
        x >>= 1
    return x|y



h,w = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(h)]
b = [list(map(int, input().split())) for _ in range(h)]
g = [[0]*w for _ in range(h)]
for i in range(h):
  for j in range(w):
    g[i][j] = abs(a[i][j] - b[i][j])
a = b = 0
m = max(max(x) for x in g)
mask = (1<<m*(h+w+2)) - 1

dp = [[0]*(w+1) for _ in range(h+1)]
dp[0][1] = 1
dp[1][0] = 1
for i in range(1,h+1):
  for j in range(1,w+1):
    par = dp[i-1][j] | dp[i][j-1]
    dp[i][j] = mask&(par<<g[i-1][j-1])|fold(par,g[i-1][j-1])
for i in range(m*(h+w+2)):
  if dp[h][w]&(1<<i):
    print(i)
    break

Submission status: Wrong Answer

Solution code:
def fold(x,m):
    y = 0
    for _ in range(m):
        if x & 1:
            y |= 1
        y <<= 1
        x >>= 1
    return x|y



h,w = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(h)]
b = [list(map(int, input().split())) for _ in range(h)]
g = [[0]*w for _ in range(h)]
for i in range(h):
  for j in range(w):
    g[i][j] = abs(a[i][j] - b[i][j])
a = b = 0
m = max(max(x) for x in g)
mask = (1<<(m*(h+w+2)//2)) - 1

dp = [[0]*(w+1) for _ in range(h+1)]
dp[0][1] = 1
dp[1][0] = 1
for i in range(1,h+1):
  for j in range(1,w+1):
    par = dp[i-1][j] | dp[i][j-1]
    dp[i][j] = mask&(par<<g[i-1][j-1])|fold(par,g[i-1][j-1])
for i in range(m*(h+w+2)//2):
  if dp[h][w]&(1<<i):
    print(i)
    break

Submission status: Wrong Answer

Solution code:
def fold(x,m):
    y = 0
    for _ in range(m):
        if x & 1:
            y |= 1
        y <<= 1
        x >>= 1
    return x|y



h,w = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(h)]
b = [list(map(int, input().split())) for _ in range(h)]
g = [[0]*w for _ in range(h)]
for i in range(h):
  for j in range(w):
    g[i][j] = abs(a[i][j] - b[i][j])
a = b = 0
m = max(max(x) for x in g)
mask = (1<<(m*(h+w+2))) - 1

dp = [[0]*(w+1) for _ in range(h+1)]
dp[0][1] = 1
dp[1][0] = 1
for i in range(1,h+1):
  for j in range(1,w+1):
    par = dp[i-1][j] | dp[i][j-1]
    dp[i][j] = mask&(par<<g[i-1][j-1])|fold(par,g[i-1][j-1])
for i in range(m):
  if dp[h][w]&(1<<i):
    print(i)
    break

Submission status: Wrong Answer

Solution code:
def fold(x,m):
    y = 0
    for _ in range(m):
        if x & 1:
            y |= 1
        y <<= 1
        x >>= 1
    return x|y



h,w = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(h)]
b = [list(map(int, input().split())) for _ in range(h)]
g = [[0]*w for _ in range(h)]
for i in range(h):
  for j in range(w):
    g[i][j] = abs(a[i][j] - b[i][j])
a = b = 0
m = max(max(x) for x in g)
mask = (1<<(m*(h+w+2)//2)) - 1

dp = [[0]*(w+1) for _ in range(h+1)]
dp[0][1] = 1
dp[1][0] = 1
for i in range(1,h+1):
  for j in range(1,w+1):
    par = dp[i-1][j] | dp[i][j-1]
    dp[i][j] = mask&(par<<g[i-1][j-1])|fold(par,g[i-1][j-1])
for i in range(m):
  if dp[h][w]&(1<<i):
    print(i)
    break

Submission status: Wrong Answer

Solution code:
h,w=map(int,input().split())
a=[list(map(int,input().split())) for _ in range(h)]
b=[list(map(int,input().split())) for _ in range(h)]
g=[[0]*w for _ in range(h)]
for i in range(h):
    for j in range(w):
        g[i][j]=(h+w)*40+abs(a[i][j]-b[i][j])
dp=[[[0]*((h+w)*80+1) for _ in range(w)] for _ in range(h)]
dp[0][0][g[0][0]]=1
dp[0][0][-1*g[0][0]]=1
dyx=[(1,0),(0,1)]
for i in range(h):
    for j in range(w):
        for y,x in dyx:
            ny=i+y
            nx=j+x
            if 0<=ny<h and 0<=nx<w:
                for k in range((h+w)*80+1):
                    if 0<=k+g[ny][nx]<(h+w)*80+1:
                        dp[ny][nx][k+g[ny][nx]]=dp[i][j][k]
                    if 0<=k-g[ny][nx]<(h+w)*80+1:
                        dp[ny][nx][k-g[ny][nx]]=dp[i][j][k]
ans=float("inf")
for i in range((h+w)*40,(h+w)*80+1):
    if dp[h-1][w-1][i]:
        ans=i-(h+w)*40
        break
for i in range((h+w)*40,-1,-1):
    if dp[h-1][w-1][i]:
        ans=min(ans,(h+w)*40-i)
        break
print(ans)

Submission status: Wrong Answer

Solution code:
h, w = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(h)]
b = [list(map(int, input().split())) for _ in range(h)]
c = [[abs(a[i][j] - b[i][j]) for j in range(w)] for i in range(h)]

dp = [[set() for j in range(w)] for i in range(h)]
dp[0][0].add(c[0][0])

for i in range(h-1):
  for j in range(w-1):
    for num in dp[i][j]:
      dp[i+1][j].add(abs(c[i+1][j] - num))
      dp[i+1][j].add(c[i+1][j] + num)
      dp[i][j+1].add(abs(c[i][j+1] - num))
      dp[i][j+1].add(c[i][j+1] + num)
      
for i in range(h-1):
  for num in dp[i][-1]:
    dp[i+1][-1].add(abs(c[i+1][j] - num))
    dp[i+1][-1].add(c[i+1][j] + num)
    
for j in range(w-1):
  for num in dp[-1][j]:
    dp[-1][j+1].add(abs(c[-1][j+1] - num))
    dp[-1][j+1].add(c[-1][j+1] + num)

print(min(dp[-1][-1]))