| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 | 512 MB | 14 | 7 | 5 | 50.000% |
Albert는 균등한 크기의 $N$ 개의 칸으로 구성된 도넛 모양의 게임 보드를 이용한 마법의 도넛 게임 놀이를 즐겨한다.
우선 도넛 모양의 게임 보드의 칸 중 하나를 "기준 칸"으로 삼아 12시 방향에 놓이도록 한 후, 각 칸에는 시계 방향 순으로 $V_1, V_2, \dots, V_N$ 의 정수 값을 적어넣는다. 예를 들어 아래 그림은 $N = 7, V = [2, 0, 2, 4, 9, 9, 9]$ 인 경우를 나타내며 "기준 칸"은 화살표로 강조되어있다.
이후, 지시 사항이 적힌 카드 $M$ 장을 순서대로 뽑아 카드에 적힌 지시 사항을 수행한다 - 각 카드에는 3개의 정수가 적혀있는데, 편의상 $i$ 번째 카드에 적힌 3개의 정수를 순서대로 $S_i, X_i, Y_i$ 라 하자. 총 다섯 종류의 지시 사항이 있으며, 각 카드에 적힌 첫 번째 정수 ($S_i$)의 값이 지시 사항의 내용을 결정한다 (즉, $S_i \in \{1, 2, 3,4, 5\}$).
예를 들어 $M = 9$ 이고 $S = [1, 4, 5, 5, 3, 5, 2, 4, 5]$, $X = [2, 4, 3, 5, 0, 3, 2, 4, 3]$, $Y = [0, 3, 0, 0, 0, 0, 0, 2, 0]$ 이라 하자.
| 게임 보드 상태 | 설명 |
|
게임을 시작할 때의 게임 보드 상태이다. 화살표로 표시된 칸이 "기준칸" 현재 시점의 기준칸이다. |
|
| 1번 카드를 뽑은 후 게임 보드를 반시계 방향으로 2칸 돌린 이후의 게임 보드 상태이다. | |
| 2번 카드를 뽑은 후 4개의 칸에 각각 3씩 더한 이후의 게임 보드 상태이다. | |
|
3번 카드를 뽑아 총 3개의 칸에 적힌 값을 모두 더하면 $5 + 7 + 12 = 24$가 되므로 $O_1 = 24$ 이다. 게임 보드의 상태는 변화가 없다. |
|
|
4번 카드를 뽑아 총 5개의 칸에 적힌 값을 모두 더하면 $5 + 7 + 12 + 12 + 9= 45$가 되므로 $O_2 = 45$ 이다. 게임 보드의 상태는 변화가 없다. |
|
| 5번 카드를 뽑아 게임 보드를 뒤집은 이후의 게임 보드 상태이다. 12시 방향을 가리키는 기준칸은 위치가 변하지 않음에 유의하자. | |
|
6번 카드를 뽑아 총 3개의 칸에 적힌 값을 모두 더하면 $5 + 0 + 2 = 7$이 되므로 $O_3 = 7$ 이다. 게임 보드의 상태는 변화가 없다. |
|
| 7번 카드를 뽑은 후 게임 보드를 시계 방향으로 2칸 돌린 이후의 게임 보드 상태이다. | |
| 8번 카드를 뽑은 후 4개의 칸에 각각 2씩 더한 이후의 게임 보드 상태이다. | |
|
9번 카드를 뽑아 총 3개의 칸에 적힌 값을 모두 더하면 $14 + 9 + 7 = 30$이 되므로 $O_4 = 30$ 이다. 게임 보드의 상태는 변화가 없다. |
이 때 5번 종류의 지시사항이 적힌 카드는 총 4장이므로 $O = [24, 45, 7, 30]$ 가 된다.
입력으로 $N, M, V, S, X, Y$ 값이 주어졌을 때, 위 놀이를 마친 후 메모지에 적힌 값들을 구해보자 (즉, $O_1, O_2, \dots$ 값을 구하면 된다).
입력 첫 줄에 테스트 케이스의 수 $T$ 가 주어진다.
각 테스트의 첫 줄에는 $N, M$이 공백으로 구분되어 주어진다. 둘째 줄에는 배열 $V$ 의 원소인 $N$ 개의 정수가 공백으로 구분되어 주어진다. 셋째 줄에는 배열 $S$ 의 원소인 $M$ 개의 정수가 공백으로 구분되어 주어진다. 넷째 줄에는 배열 $X$ 의 원소인 $M$ 개의 정수가 공백으로 구분되어 주어진다. 다섯째 줄에는 배열 $Y$ 의 원소인 $M$ 개의 정수가 공백으로 구분되어 주어진다.
각 테스트 케이스의 정답이 되는 배열 $O$ 의 값을 공백으로 구분하여 각 줄에 출력한다. 단, 이 값이 매우 커질 수 있으므로 $O$ 의 각 원소를 $10^9 + 7$ 로 나눈 나머지를 출력한다.
3 7 9 2 0 2 4 9 9 9 1 4 5 5 3 5 2 4 5 2 4 3 5 0 3 2 4 3 0 3 0 0 0 0 0 2 0 6 9 2 0 2 4 0 0 1 4 5 5 3 5 2 4 5 2 4 3 5 0 3 2 4 3 0 3 0 0 0 0 0 2 0 6 5 3 1 4 1 5 9 1 2 3 4 5 1 3 0 4 4 0 0 0 1 0
24 45 7 30 15 20 7 21 15
예제 1: 본문에서 다루었다.
예제 2: 추가 설명 없음
예제 3:
| 게임 보드 상태 | 설명 |
| 게임을 시작할 때의 게임 보드 상태이다. | |
| 1번 카드를 뽑은 후 게임 보드를 반시계 방향으로 1칸 돌린 이후의 게임 보드 상태이다. | |
| 2번 카드를 뽑은 후 게임 보드를 시계 방향으로 3칸 돌린 이후의 게임 보드 상태이다. | |
| 3번 카드를 뽑아 게임 보드를 뒤집은 이후의 게임 보드 상태이다. | |
| 4번 카드를 뽑아 4개의 칸에 각각 1씩 더한 이후의 게임 보드 상태이다. | |
|
5번 카드를 뽑아 총 4개의 칸에 적힌 값을 모두 더하면 $6+2+5+2 = 15$ 가 된다. 따라서 $O_1 = 15$ 이다. 게임 보드의 상태는 변화가 없다. |