Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n , m = map(int , input().split())
- arr = [list(map(int , input().split())) for i in range(n)]
- l = list(map(int , input().split()))
- ans = [[0]*m for i in range(n)]
- def put(lis,layer):
- ind = 0
- #print("putting " , lis , "in" , layer + 1)
- for i in range(layer, m - layer):
- ans[layer][i] = lis[ind]
- ind+=1
- for j in range(layer+1, n - layer):
- #print(j,n-layer-1)
- ans[j][m-layer-1] = lis[ind]
- ind+=1
- for j in range(m - layer - 2, layer-1,-1):
- #print(n-layer-1,j)
- ans[n-layer-1][j] = lis[ind]
- ind+=1
- for j in range(n - layer - 2, layer , -1):
- #print(j, layer)
- ans[j][layer] = lis[ind]
- ind+=1
- #assert ind == len(lis) - 1
- def f(layer):
- #if layer > min(n//2.m//2):
- #return
- #print(layer)
- try:
- a = []
- for i in range(layer, m - layer):
- #print("?",layer , i)
- a.append(arr[layer][i])
- for j in range(layer+1, n - layer):
- #print("!",j,m-layer-1)
- a.append(arr[j][m-layer-1])
- for j in range(m - layer - 2, layer-1,-1):
- if n > 1:
- #print(">",n-layer-1,j)
- a.append(arr[n-layer-1][j])
- for j in range(n - layer - 2, layer , -1):
- if m > 1:
- #print("//",j, layer)
- a.append(arr[j][layer])
- mov = l[layer]%len(a)
- #print(a)
- if (layer+1)%2 == 0:
- #print(a[-mov:] , a[:len(a)-mov])
- a = a[-mov:] + a[:len(a)-mov]
- else:
- a = a[mov:] + a[:mov]
- #print(a)
- put(a,layer)
- #print(ans)
- f(layer+1)
- except:
- #print(ans)
- return
- f(0)
- #print("ans")
- for i in range(n):
- print(*ans[i])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement