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

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

문자열 삽입과 출력

시간 제한10초메모리 제한256 MB

요약
하나의 문자열에 위치 지정 삽입을 적용하고 요청된 구간을 그대로 출력합니다.
난이도

보통10점 중 6점

유형
트리, 문자열, 구현
정답자
아직 제출이 없습니다

문제

문자열 SS 하나를 유지하면서 삽입 연산과 출력 연산을 주어진 순서대로 처리한다. 삽입 연산은 SS의 지정한 위치에 새 문자열을 끼워 넣고, 출력 연산은 SS의 지정한 구간을 그대로 출력한다. 특별한 아이디어가 필요한 문제는 아니고 구현이 전부다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. (1≤T≤1001 \le T \le 100)

각 테스트 케이스의 첫 줄에 문자열 SS가 주어진다. (1≤∣S∣≤1,000,0001 \le |S| \le 1{,}000{,}000)

이어서 연산이 한 줄에 하나씩 주어진다. 연산 줄은 적어도 한 줄이다. 인덱스는 0부터 센다.

  • I R X : SS의 인덱스 XX 자리에 문자열 RR을 삽입한다. (0≤X≤∣S∣0 \le X \le |S|) 삽입한 뒤 RR의 첫 글자가 인덱스 XX에 온다. X=∣S∣X = |S|이면 SS의 뒤에 RR을 이어 붙인다. 예를 들어 SS가 abc일 때 I xy 1의 결과는 axybc, I xy 3의 결과는 abcxy, I xy 0의 결과는 xyabc다.
  • P X Y : SS의 인덱스 XX부터 인덱스 YY까지의 문자를 출력한다. (0≤X≤Y<∣S∣0 \le X \le Y < |S|) 예를 들어 SS가 abc일 때 P 0 2는 abc를, P 1 1은 b를 출력한다.
  • END : 테스트 케이스가 끝났다는 뜻이다.

SS와 RR은 알파벳 소문자로만 이루어진다. 연산을 처리하는 동안 SS의 길이가 100만을 넘는 경우는 없고, 출력하는 문자의 개수를 모든 테스트 케이스에서 합해도 100만을 넘지 않는다.

입력과 출력의 양이 많으므로 빠른 입출력을 쓰는 편이 좋다.

출력

P X Y 연산이 나올 때마다 대응하는 부분 문자열을 한 줄에 출력한다.

예제3

  1. 예제 1

    입력
    1
    acm
    I ac 3
    P 0 3
    I x 3
    I xxxx 6
    I pc 6
    P 0 11
    END
    
    예상 출력
    acma
    acmxacpcxxxx
    
  2. 예제 2

    입력
    3
    abc
    I xy 1
    P 0 4
    END
    abc
    I xy 3
    P 0 4
    END
    abc
    I xy 0
    P 0 4
    END
    
    예상 출력
    axybc
    abcxy
    xyabc
    
  3. 예제 3

    입력
    1
    abc
    P 0 2
    P 1 1
    END
    
    예상 출력
    abc
    b