Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- n = int(input())
- s = list(map(int, list(input())))
- dp = [[None for j in range(n + 1)] for i in range(n + 1)]
- dp[0][sum(s)] = 0
- for i in range(n):
- for j in range(n + 1):
- if dp[i][j] is not None:
- for k in range(max(0, i + 1 - n + j), min(i + 1, j) + 1):
- dp[i + 1][j + i + 1 - 2 * k] = k
- if dp[n][0] is None:
- print("No")
- else:
- a = []
- j = 0
- for i in range(n, 0, -1):
- a.append(dp[i][j])
- j += 2 * dp[i][j] - i
- a.reverse()
- print("Yes")
- for i in range(n):
- off = a[i]
- on = i + 1 - a[i]
- for j in range(n):
- if off > 0 and s[j] == 1:
- s[j] = 0
- off -= 1
- print(j + 1, end = " ")
- elif on > 0 and s[j] == 0:
- s[j] = 1
- on -= 1
- print(j + 1, end = " ")
- print()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement