배열과 연산

면접 대비

시간 제한2초메모리 제한512 MB

요약
원소가 0인 배열에 전체에 인덱스를 더하는 연산과 구간 뒤집기 연산을 순서대로 q번 적용한 뒤, m개의 위치에 있는 값을 출력한다.
난이도

보통10점 중 7점

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

문제

크기가 nn인 정수 배열 XX가 있고, 처음에는 모든 원소가 00이다. 이 배열에 연산을 qq번 적용하려고 한다.

적용할 수 있는 연산은 두 가지다.

  • 덧셈: 모든 X[i]X[i]에 ii를 더한다. (0≤i<n0 \le i < n)
  • 뒤집기: i≤ji \le j인 두 정수 ii, jj가 필요하다. X[i]X[i]부터 X[j]X[j]까지 원소의 순서를 뒤집는다. 즉 X[i],X[i+1],…,X[j−1],X[j]X[i], X[i+1], \ldots, X[j-1], X[j]의 순서가 뒤집힌다.

예를 들어 n=6n = 6이고 다음 다섯 개의 연산을 순서대로 적용한다고 하자.

  1. 덧셈
  2. 덧셈
  3. 뒤집기 i=0i = 0, j=4j = 4
  4. 덧셈
  5. 뒤집기 i=2i = 2, j=5j = 5

처음에 XX는 [0,0,0,0,0,0][0, 0, 0, 0, 0, 0]이다. 각 연산을 적용한 결과는 다음과 같다.

  1. [0,1,2,3,4,5][0, 1, 2, 3, 4, 5]
  2. [0,2,4,6,8,10][0, 2, 4, 6, 8, 10]
  3. [8,6,4,2,0,10][8, 6, 4, 2, 0, 10]
  4. [8,7,6,5,4,15][8, 7, 6, 5, 4, 15]
  5. [8,7,15,4,5,6][8, 7, 15, 4, 5, 6]

배열의 크기 nn, 적용한 연산의 수 qq, 그리고 적용한 연산이 주어졌을 때 배열 XX에 담긴 값을 구하려고 한다.

크기가 mm인 배열 YY가 주어졌을 때, 모든 연산을 적용한 뒤의 X[Y[i]]X[Y[i]] 값을 구해보자.

입력

첫째 줄에 세 정수 nn, qq, mm이 주어진다. (1≤n≤1,000,0001 \le n \le 1{,}000{,}000, 0≤q≤10,0000 \le q \le 10{,}000, 1≤m≤5,0001 \le m \le 5{,}000)

다음 qq개의 줄에 연산이 한 줄에 하나씩 주어진다. 각 줄은 'a'나 'r'로 시작한다. 'a'는 덧셈 연산을, 'r'은 뒤집기 연산을 나타낸다. 'r'이 주어진 경우 그 뒤에 공백으로 구분된 두 정수 ii, jj가 주어진다. (0≤i≤j<n0 \le i \le j < n)

마지막 줄에는 배열 YY를 나타내는 mm개의 정수가 순서대로 주어진다. (0≤Y[i]<n0 \le Y[i] < n)

출력

총 mm개의 줄에 X[Y[i]]X[Y[i]] 값을 순서대로 한 줄에 하나씩 출력한다.

예제5

  1. 예제 1

    입력
    6 5 6
    a
    a
    r 0 4
    a
    r 2 5
    0 1 2 3 4 5
    
    예상 출력
    8 
    7 
    15 
    4 
    5 
    6
    
  2. 예제 2

    입력
    3 0 3
    2 1 0
    
    예상 출력
    0
    0
    0
    
  3. 예제 3

    입력
    7 6 7
    a
    a
    r 0 3
    a
    a
    r 3 5
    0 1 2 3 4 5 6
    
    예상 출력
    6
    6
    6
    20
    16
    6
    24
    
  4. 예제 4

    입력
    2 7 2
    a
    r 0 1
    a
    a
    r 0 1
    a
    r 0 1
    0 1
    
    예상 출력
    2
    2
    
  5. 예제 5

    입력
    2 10 2
    a
    r 0 1
    a
    a
    r 0 1
    a
    r 0 1
    r 0 0
    r 1 1
    r 0 1
    0 1
    
    예상 출력
    2
    2