import
java.util.*;
import
java.lang.*;
class
GFG{
static
void
findMaxArray(
int
[] arr, String str)
{
int
N = arr.length;
ArrayList<Integer> Z =
new
ArrayList<>(), O =
new
ArrayList<>();
int
[] ans =
new
int
[N];
for
(
int
i =
0
; i < N; i++)
{
if
(str.charAt(i) ==
'0'
)
{
Z.add(arr[i]);
}
else
{
O.add(arr[i]);
}
}
Collections.sort(Z,
new
Comparator<Integer>()
{
public
int
compare(Integer a, Integer b)
{
String X = Integer.toString(a);
String Y = Integer.toString(b);
String XY = X + Y;
String YX = Y + X;
return
XY.compareTo(YX) >
0
? -
1
:
1
;
}
});
Collections.sort(O,
new
Comparator<Integer>()
{
public
int
compare(Integer a, Integer b)
{
String X = Integer.toString(a);
String Y = Integer.toString(b);
String XY = X + Y;
String YX = Y + X;
return
XY.compareTo(YX) >
0
? -
1
:
1
;
}
});
int
j =
0
, k =
0
;
for
(
int
i =
0
; i < N; i++)
{
if
(str.charAt(i) ==
'0'
)
{
ans[i] = Z.get(j++);
}
else
{
ans[i] = O.get(k++);
}
}
for
(
int
i =
0
; i < N; i++)
{
System.out.print(ans[i] +
" "
);
}
}
public
static
void
main (String[] args)
{
int
[] arr = {
1
,
3
,
456
,
6
,
7
,
8
};
String str =
"101101"
;
findMaxArray(arr, str);
}
}