Advertisement
Guest User

Untitled

a guest
Nov 21st, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.71 KB | None | 0 0
  1. n = int(input())
  2. s = list(map(int, list(input())))
  3. dp = [[None for j in range(n + 1)] for i in range(n + 1)]
  4. dp[0][sum(s)] = 0
  5. for i in range(n):
  6.     for j in range(n + 1):
  7.         if dp[i][j] is not None:
  8.             for k in range(max(0, i + 1 - n + j), min(i + 1, j) + 1):
  9.                 dp[i + 1][j + i + 1 - 2 * k] = k
  10. if dp[n][0] is None:
  11.     print("No")
  12. else:
  13.     a = []
  14.     j = 0
  15.     for i in range(n, 0, -1):
  16.         a.append(dp[i][j])
  17.         j += 2 * dp[i][j] - i
  18.     a.reverse()
  19.     print("Yes")
  20.     for i in range(n):
  21.         off = a[i]
  22.         on = i + 1 - a[i]
  23.         for j in range(n):
  24.             if off > 0 and s[j] == 1:
  25.                 s[j] = 0
  26.                 off -= 1
  27.                 print(j + 1, end = " ")
  28.             elif on > 0 and s[j] == 0:
  29.                 s[j] = 1
  30.                 on -= 1
  31.                 print(j + 1, end = " ")
  32.         print()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement