import
java.util.ArrayList;
import
java.util.List;
public
class
CircularShiftTransformation {
public
static
String transformString(
int
N,
int
T, String S,
int
[] ID) {
List<Integer>[] positions =
new
ArrayList[T +
1
];
for
(
int
i =
0
; i <= T; i++) {
positions[i] =
new
ArrayList<>();
}
for
(
int
i =
0
; i < N; i++) {
positions[ID[i]].add(i);
}
for
(
int
identifier =
1
; identifier <= T; identifier++) {
List<Integer> pos = positions[identifier];
int
shiftAmount =
1
;
List<Integer> shiftedPos =
new
ArrayList<>(pos);
for
(
int
i =
0
; i < pos.size(); i++) {
shiftedPos.set((i + shiftAmount) % pos.size(), pos.get(i));
}
positions[identifier] = shiftedPos;
}
char
[] result = S.toCharArray();
for
(
int
identifier =
1
; identifier <= T; identifier++) {
List<Integer> pos = positions[identifier];
List<Integer> shiftedPos =
new
ArrayList<>(pos);
for
(
int
i =
0
; i < pos.size(); i++) {
result[shiftedPos.get((i +
1
) % pos.size())] = S.charAt(pos.get(i));
}
}
return
new
String(result);
}
public
static
void
main(String[] args) {
int
N =
13
;
int
T =
3
;
String S =
"geeksforgeeks"
;
int
[] ID = {
1
,
2
,
3
,
1
,
2
,
2
,
1
,
1
,
3
,
2
,
2
,
1
,
3
};
String str = transformString(N, T, S, ID);
System.out.println(str);
}
}