만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

숫자 만들기

시간 제한1.5초메모리 제한1024 MB

요약
X의 자릿수를 재배열한 수 가운데 맨 앞자리가 0이 아니고 Y 이상인 가장 작은 Z를 구하며, Y의 자릿수 변경과 Z의 특정 자리 조회를 처리합니다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 그리디, 문자열
정답자
아직 제출이 없습니다

문제

두 양의 정수 XX와 YY가 주어진다. 두 수의 10진수 자릿수는 같다. ZZ는 다음 조건을 모두 만족하는 10진수 양의 정수이다.

  • ZZ의 자릿수는 XX의 자릿수를 재배열한 것이다. ZZ의 맨 앞자리는 0일 수 없다. 예를 들어 X=1103X=1103이면 ZZ는 11031103 또는 31013101일 수 있지만, 21102110, 301301, 01310131은 ZZ가 될 수 없다.
  • Y≤ZY\le Z이다.
  • ZZ는 위 조건을 만족하는 값 중 최솟값이다.

다음 QQ개의 질의를 처리한다. 질의는 다음 두 종류 중 하나이다.

  • YY의 ii번째 자릿수를 xx로 바꾼다.
  • ZZ의 ii번째 자릿수를 출력한다. 해당하는 ZZ가 없으면 −1-1을 출력한다.

자릿수는 왼쪽부터 센다.

입력

첫째 줄에 두 정수 XX와 YY가 공백으로 구분되어 주어진다.

둘째 줄에 QQ가 주어진다.

다음 QQ개의 줄에 질의가 주어진다. 각 질의의 첫 번째 정수는 질의의 종류이며, 형식은 다음과 같다.

  • 1 ii xx: YY의 ii번째 자릿수를 xx로 바꾼다.
  • 2 ii: ZZ의 ii번째 자릿수를 출력한다. 해당하는 ZZ가 없으면 −1-1을 출력한다.

종류가 2인 질의가 적어도 하나 주어진다.

출력

종류가 2인 질의마다 답을 한 줄에 하나씩 출력한다.

제한

1≤X,Y<101000001\le X, Y<10^{100000} 1≤Q≤1000001\le Q\le 100000 XX와 YY의 자릿수는 같다. XX와 YY의 맨 앞자리는 0이 아니다. 종류가 1인 질의에서 1≤i≤1\le i\le (YY의 자릿수), 0≤x≤90\le x\le 9이다. i=1i=1이면 x≠0x\ne 0이다. 종류가 2인 질의에서 1≤i≤1\le i\le (YY의 자릿수)이다.

예제3

  1. 예제 1

    입력
    3304 1615
    6
    2 3
    2 4
    1 1 3
    2 2
    1 2 4
    2 1
    
    예상 출력
    3
    4
    0
    3
    
  2. 예제 2

    입력
    838046 780357
    10
    2 1
    2 2
    1 2 4
    2 3
    2 4
    1 4 5
    2 5
    2 6
    1 1 9
    2 2
    
    예상 출력
    8
    0
    3
    4
    6
    8
    -1
    
  3. 예제 3

    입력
    2950 9052
    4
    2 1
    2 2
    2 3
    2 4
    
    예상 출력
    9
    0
    5
    2