배열 돌리기 6
시간 제한1초메모리 제한512 MB
2^N x 2^N 격자에 대해 크기 2^l인 블록을 뒤집거나 회전하고 블록 자체를 재배치하는 연산을 R번 순서대로 적용한 뒤 결과 격자를 출력한다.
문제
크기가 인 배열이 있을 때, 배열에 연산을 번 적용하려고 한다. 연산은 8가지가 있고, 연산에는 단계 ()이 있다. 단계 은 배열을 부분 배열로 나눌 때 사용하는 값이며, 부분 배열의 크기는 가 되어야 한다. 단계는 연산을 수행할 때마다 정한다.
다음은 크기가 인 배열을 단계 의 값에 따라 부분 배열로 나눈 것이다. 같은 부분 배열은 같은 색상으로 표시했다.
1번 연산은 각 부분 배열을 상하 반전시키는 연산이다.
2번 연산은 각 부분 배열을 좌우 반전시키는 연산이다.
3번 연산은 각 부분 배열을 오른쪽으로 90도 회전시키는 연산이다.
4번 연산은 각 부분 배열을 왼쪽으로 90도 회전시키는 연산이다.
5, 6, 7, 8번 연산은 부분 배열을 한 칸으로 생각하고 적용시킨다. 즉, 부분 배열의 안에 있는 값은 변하지 않는다.
5번 연산은 배열을 상하 반전시키는 연산이다.
6번 연산은 배열을 좌우 반전시키는 연산이다.
7번 연산은 오른쪽으로 90도 회전시키는 연산이다.
8번 연산은 왼쪽으로 90도 회전시키는 연산이다.
입력
첫째 줄에 , 이 주어진다. 둘째 줄부터 개의 줄에 배열의 원소 가 주어진다. 번째 줄의 번째 정수는 를 의미한다.
다음 개의 줄에 배열에 적용시켜야 하는 연산이 한 줄에 하나씩 주어진다. 연산은 두 정수 , 로 이루어져 있고, 번 연산을 단계 로 적용한다는 의미이다.
출력
입력으로 주어진 배열에 개의 연산을 순서대로 수행한 결과를 출력한다.
















