import
java.util.ArrayList;
import
java.util.Arrays;
import
java.util.HashMap;
class
GFG
{
public
static
void
equalSubstrings(String s)
{
int
n = s.length();
int
[] pre0 =
new
int
[n];
int
[] pre1 =
new
int
[n];
Arrays.fill(pre0,
0
);
Arrays.fill(pre1,
0
);
if
(s.charAt(
0
) ==
'0'
) {
pre0[
0
] =
1
;
}
else
{
pre1[
0
] =
1
;
}
for
(
int
i =
1
; i < n; i++) {
if
(s.charAt(i) ==
'0'
) {
pre0[i] = pre0[i -
1
] +
1
;
pre1[i] = pre1[i -
1
];
}
else
{
pre0[i] = pre0[i -
1
];
pre1[i] = pre1[i -
1
] +
1
;
}
}
ArrayList<Integer> ans =
new
ArrayList<Integer>();
HashMap<String, Integer> mp =
new
HashMap<String, Integer>();
for
(
int
i =
0
; i < n; i++)
{
int
x = __gcd(pre0[i], pre1[i]);
int
l = pre0[i] / x, r = pre1[i] / x;
String key = l +
","
+ r;
if
(mp.containsKey(key))
mp.put(key, mp.get(key) +
1
);
else
mp.put(key,
1
);
ans.add(mp.get(key));
}
for
(
int
i : ans)
System.out.print(i +
" "
);
}
public
static
int
__gcd(
int
a,
int
b) {
if
(b ==
0
)
return
a;
return
__gcd(b, a % b);
}
public
static
void
main(String args[]) {
String s =
"001110"
;
equalSubstrings(s);
}
}