페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#1653

숫자 돌리기 (ROTIRAJ) 1초 32MB

문제

미르코와 슬라브코가 "숫자 돌리기"라는 게임을 하고 있다. 

먼저, 미르코가 길이 N인 수열을 생각한 후 K개씩 수를 묶는다. (단, K는 N의 약수) 

 

그런 후, 슬라브코는 미르코에게 다음 둘 중 하나의 명령을 내린다.

1) 각 수 묶음에 대해 왼쪽 또는 오른쪽으로 X회 회전한다. 2) 수열 전체를 왼쪽 또는 오른쪽으로 X회 회전한다. 이 명령을 따른 후, 미르코는 K개씩 수를 새롭게 묶는다.

 

처음에 미르코가 생각한 수열이 (1, 2, 3, 4, 5, 6)이고 N=6, K=3인 경우, 처음에는 (1, 2, 3) / (4, 5, 6)으로 수를 묶게 된다. 슬라브코가 각 수 묶음에 대해 왼쪽으로 2회 회전하라고 명령하면, 미르코의 수열은 (3, 1, 2) / (6, 4, 5)가 된다. 그 후, 슬라브코가 수열 전체를 오른쪽으로 2회 회전하라고 명령하면, 

미르코의 수열은 4, 5, 3, 1, 2, 6이 되고, (4, 5, 3) / (1, 2, 6)으로 수를 새롭게 묶게 된다.

슬라브코가 몇 번의 명령을 내린 후, 미르코는 회전한 후의 수열의 상태를 말한다. 

그러면 슬라브코는 미르코가 처음 생각한 수열을 맞춰야 한다. 

 

슬라브코를 도와 처음 생각한 수열을 맞추는 프로그램을 작성하여라.


입력

첫 번째 줄에는 수열의 길이 N, 묶는 수의 개수 K, 슬라브코가 명령한 횟수 Q가 주어진다. (1 ≤ N, K, Q ≤ 100,000)

두 번째 줄부터 Q개의 줄에는 명령의 종류 A (1 ≤ A ≤ 2)와 회전의 수 X (-100,000 ≤ X ≤ 100,000)가 주어진다. 

X가 음수이면, 왼쪽으로 |X|회 회전하라는 것이고, X가 양수이면 오른쪽으로 X회 회전하라는 것이다. 

마지막 줄에는 회전한 후의 미르코의 수열 Z[i]이 주어진다. ( 0 <= Z[i] <= 100,000)


출력

미르코가 처음 생각한 수열을 출력한다.


예제1

입력
422

22
11
3210
출력
0123

예제2

입력
844

13
115
1-5
2-1
6101419216171
출력
6101412161719

출처

COCI 2012/2013 - Contest 5
2013.03.09 모의테스트5

역링크