만드는 중입니다

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

Minimization by Swaps

면접 대비

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

요약
숫자 문자열 s에서 인접한 두 자리를 최대 k번 바꿨을 때 만들 수 있는 가장 작은 수를 구합니다.
난이도

보통10점 중 5점

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

문제

Masha는 큰 수를 공부하고 있다. 그녀는 카드 nn장을 한 줄로 늘어놓았다. 각 카드에는 11부터 99까지의 숫자가 하나씩 적혀 있다. 이 카드들이 모여 nn자리 정수 ss를 이룬다.

한 번의 연산에서 Masha는 인접한 카드 두 장을 골라 자리를 바꿀 수 있다. 카드를 뒤집어서 숫자를 다른 숫자로 바꿀 수는 없다. Masha가 수행할 수 있는 연산은 최대 kk번이다. 결과로 얻을 수 있는 nn자리 수 중 가장 작은 수는 무엇인가?

입력

첫 줄에 테스트 케이스의 개수 tt가 주어진다(1≤t≤100 0001 \le t \le 100\,000). 이어지는 줄마다 테스트 케이스가 주어진다.

각 테스트 케이스는 공백으로 구분된 두 정수 ss와 kk가 한 줄에 주어진다. 정수 ss는 양의 정수이며 11부터 99까지의 숫자로 이루어진다. 또한 0≤k≤10180 \le k \le 10^{18}이다.

모든 수 ss의 자릿수 합은 100 000100\,000을 넘지 않는다.

출력

각 테스트 케이스에 대해, ss의 인접한 두 자리를 최대 kk번 바꾸어 얻을 수 있는 가장 작은 nn자리 수를 한 줄에 출력한다.

예제1

  1. 예제 1

    입력
    4
    321 0
    9 1
    21241127 10
    692 1
    
    예상 출력
    321
    9
    11122247
    629