Advertisement
Guest User

Untitled

a guest
Aug 19th, 2020
257
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.47 KB | None | 0 0
  1. n , m = map(int , input().split())
  2. arr = [list(map(int , input().split())) for i in range(n)]
  3. l = list(map(int , input().split()))
  4. ans = [[0]*m for i in range(n)]
  5.  
  6. def put(lis,layer):
  7.     ind = 0
  8.     #print("putting " , lis , "in" , layer + 1)
  9.     for i in range(layer, m - layer):
  10.         ans[layer][i] = lis[ind]
  11.         ind+=1
  12.     for j in range(layer+1, n - layer):
  13.         #print(j,n-layer-1)
  14.         ans[j][m-layer-1] = lis[ind]
  15.         ind+=1
  16.     for j in range(m - layer - 2, layer-1,-1):
  17.         #print(n-layer-1,j)
  18.         ans[n-layer-1][j] = lis[ind]
  19.         ind+=1
  20.     for j in range(n - layer - 2, layer , -1):
  21.         #print(j, layer)
  22.         ans[j][layer] = lis[ind]
  23.         ind+=1
  24.     #assert ind == len(lis) - 1
  25.  
  26. def f(layer):
  27.     #if layer > min(n//2.m//2):
  28.         #return
  29.     #print(layer)
  30.     try:
  31.         a = []
  32.         for i in range(layer, m - layer):
  33.             #print("?",layer , i)
  34.             a.append(arr[layer][i])
  35.         for j in range(layer+1, n - layer):
  36.             #print("!",j,m-layer-1)
  37.             a.append(arr[j][m-layer-1])
  38.         for j in range(m - layer - 2, layer-1,-1):
  39.             if n > 1:
  40.                 #print(">",n-layer-1,j)
  41.                 a.append(arr[n-layer-1][j])
  42.         for j in range(n - layer - 2, layer , -1):
  43.             if m > 1:
  44.                 #print("//",j, layer)
  45.                 a.append(arr[j][layer])
  46.         mov = l[layer]%len(a)
  47.         #print(a)
  48.         if (layer+1)%2 == 0:
  49.             #print(a[-mov:] , a[:len(a)-mov])
  50.             a = a[-mov:] + a[:len(a)-mov]
  51.         else:
  52.             a = a[mov:] + a[:mov]
  53.         #print(a)
  54.         put(a,layer)
  55.         #print(ans)
  56.         f(layer+1)
  57.     except:
  58.         #print(ans)
  59.         return
  60.    
  61. f(0)
  62. #print("ans")
  63. for i in range(n):
  64.     print(*ans[i])
  65.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement