| 시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
|---|---|---|---|---|---|
| 2 초 (하단 참고) | 512 MB | 898 | 466 | 377 | 56.949% |
N개의 수로 이루어진 배열 A가 있다. 배열의 인덱스는 1부터 시작한다. 배열에 연산을 총 M번 적용하려고 한다. 이때, 가장 처음에 K번째에 있던 수가 모든 연산이 종료된 후 몇 번째 위치로 이동하는지 구하는 프로그램을 작성하시오.
배열에 적용할 수 있는 연산은 정수 i 하나로 이루어져 있다.
i가 양의 정수인 경우에는 배열 A의 처음 i개의 순서를 뒤집는 것이고, i가 음의 정수인 경우에는 마지막 -i개의 순서를 뒤집는 것이다.
예를 들어, N = 5이고, A = [1, 3, 2, 4, 5]인 경우에 연산 3을 적용하면, 배열 A는 [2, 3, 1, 4, 5]가 된다. 여기에 연산 -4를 적용하면, 뒤의 4개를 순서를 뒤집어 [2, 5, 4, 1, 3]이 된다. 가장 처음에 1번째 위치에 있던 수는 4번째 위치로 이동하게 되고, 3번째 위치에 있던 수는 1번째 위치로 이동하게 된다.
첫째 줄에 배열 A의 크기 N(1 ≤ N ≤ 100,000)과 위치 K(1 ≤ K ≤ N), 연산의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 둘째에는 배열 A에 들어있는 수가 1번째 수부터 순서대로 주어진다. 배열에 들어있는 수는 100,000보다 작거나 같은 자연수이다. 배열에는 같은 수가 여러 번 들어있을 수도 있다.
셋째 줄부터 M개의 줄에는 연산을 나타내는 정수 i가 한 줄에 하나씩 주어진다. i는 절댓값이 N보다 작거나 같은 0이 아닌 정수이다.
첫째 줄에 K번째 수가 연산 M번이 완료된 후에 몇 번째 위치로 이동했는지 출력한다.
5 1 2 1 3 2 4 5 3 -4
4
5 3 2 5 5 5 5 5 3 -4
1
4 4 8 10 20 15 25 1 -2 3 -4 -1 2 -3 4
3
10 1 6 9 8 1 2 8 7 3 4 6 6 9 -9 8 -8 7 -7
1
5 2 5 7 6 5 4 3 3 -3 3 -3 3
2
5 3 2 5 5 5 5 5 4 -3
2