BOJ 12453 カードシャッフル (Small)

BOJ 12453 カードシャッフル (Small)

문제 링크:

문제 내용

1 이상 MM 이하의 서로 다른 정수가 하나씩 쓰여 있는 MM장의 카드로 이루어진 덱이 있습니다. 맨 처음에는 맨 위부터 1,2,,M1, 2, \cdots, M의 순서로 쌓여 있습니다.

다음의 쿼리를 CC번 수행한 뒤에, 맨 위에서 WW번째 카드에 쓰여 있는 수를 출력하세요.

  • Ai,BiA_i, B_i: 맨 위에서 AiA_i번째 카드부터 아래쪽으로 연속한 BiB_i장의 카드를 덱에서 제거하여, 그대로 덱의 맨 위로 옮깁니다.

입력

첫 줄에는 테스트 케이스의 개수 TT가 주어집니다. (1T2001 \le T \le 200)

각 테스트 케이스에 대해, 첫 줄에는 MM, CC, WW의 값이 주어집니다. (1M1001 \le M \le 100, 1C1001 \le C \le 100, 1WM1 \le W \le M)

다음 CC줄에는 쿼리가 하나씩 주어집니다. (1Ai,BiM1 \le A_i, B_i \le M, 1Ai+Bi1M1 \le A_i + B_i - 1 \le M)

출력

각 테스트 케이스에 대해, 문제의 정답을 Case #{테스트 케이스 번호}: {문제의 정답}의 형식으로 출력합니다.

문제 풀이

스포일러
카드의 수가 많지 않으므로 시뮬레이션을 해주면 됩니다. 언어 내장 리스트나 벡터의 구간을 추출하는 연산과 벡터를 이어붙이는 연산을 활용하면, 각 쿼리를 O(M)\mathcal{O}(M)에 처리할 수 있습니다. 총 시간 복잡도는 O(TM2)\mathcal{O}(TM^2)입니다.
Last updated on