아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

카드 묶음 뒤집기

시간 제한1초메모리 제한128 MB

요약
n장의 카드 더미에 대해 위쪽 k장을 뒤집어 다시 올리는 m번의 동작을 수행한 뒤, s장의 카드가 최종적으로 몇 번째 위치에 어느 면이 위로 향하는지 출력한다.
난이도

보통10점 중 6점

유형
시뮬레이션, 구현, 수학, 배열
정답자
아직 제출이 없습니다

문제

탁자 위에 카드 nn장이 하나씩 위로 쌓여 한 묶음을 이루고 있습니다. 각 카드는 한쪽 면에만 양의 정수가 적혀 있고, 반대쪽 면은 비어 있습니다. 맨 위 카드에는 11, 그 아래 카드에는 22, 이런 식으로 내려가 맨 아래 카드에는 nn이 적혀 있습니다. 처음에는 모든 카드가 숫자가 적힌 면이 위를 향하도록 놓여 있습니다.

아치볼드는 mm번의 조작을 합니다. ii번째 조작에서는 맨 위의 카드 kik_i장을 한꺼번에 집어 든 뒤, 그 묶음 전체를 통째로 뒤집어(순서가 반대로 뒤바뀌고 각 카드의 앞뒷면도 뒤집힘) 다시 묶음의 맨 위에 올려놓습니다.

mm번의 조작이 모두 끝난 뒤, 지정된 몇 장의 카드가 각각 어느 위치에 있고 어느 면이 위를 향하는지 구하세요.

입력

첫째 줄에 두 정수 nn과 mm이 공백으로 구분되어 주어집니다 (1≤n≤1000001 \le n \le 100000, 1≤m≤10001 \le m \le 1000). 각각 카드의 수와 조작 횟수입니다.

이어지는 mm개의 줄에는 각 조작에서 뒤집는 맨 위 카드의 장수 kik_i가 한 줄에 하나씩 주어집니다 (1≤ki≤n1 \le k_i \le n).

그다음 줄에는 질의의 개수 ss가 주어집니다 (1≤s≤100001 \le s \le 10000).

이어지는 ss개의 줄에는 각 줄마다 정수 하나가 주어지며, 이는 최종 위치와 방향을 알고 싶은 카드에 적힌 숫자입니다.

출력

정확히 ss개의 줄을 출력합니다. jj번째 질의에 대해, 해당 카드의 맨 위에서부터 센 최종 위치를 pp라 합시다(맨 위 카드가 11번). 그 카드의 숫자가 위를 향하면 +p+p를, 아래를 향하면 −p-p를 출력합니다.

예제4

  1. 예제 1

    입력
    8 3
    1
    8
    4
    5
    4
    8
    1
    5
    2
    
    예상 출력
    -5
    +4
    +8
    +1
    -7
    
  2. 예제 2

    입력
    5 1
    5
    5
    1
    2
    3
    4
    5
    
    예상 출력
    -5
    -4
    -3
    -2
    -1
    
  3. 예제 3

    입력
    6 4
    2
    4
    6
    3
    6
    1
    2
    3
    4
    5
    6
    
    예상 출력
    -4
    +1
    +5
    +6
    +2
    +3
    
  4. 예제 4

    입력
    10 5
    7
    3
    10
    2
    6
    6
    1
    5
    10
    3
    8
    6
    
    예상 출력
    -3
    -10
    -5
    -1
    +4
    -9