Недалёкие строки

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

요약
숫자 문자열 s와 k가 주어질 때, s와의 자릿수 거리가 작은 순서로 나열한 뒤 같은 거리는 사전순으로 정렬했을 때 k번째 문자열을 구한다.
난이도

어려움10점 중 8점

유형
수학, 조합론, 그리디, 구현
정답자
아직 제출이 없습니다

문제

Сегодня на уроке строковедения профессор Моррис рассказывал студентам различные способы вычисления расстояния между двумя строками. Один из способов был следующий, пусть имеются две строки ss и tt длины nn, состоящие только из десятичных цифр. Тогда цифровым расстоянием между двумя данными строками профессор Моррис считает сумму модулей разности цифр на одинаковых позициях, то есть ∑_i=1n∣s_i−t_i∣\sum\_{i = 1}^{n} |s\_i - t\_i|, где s_is\_i означает цифру, записанную на позиции ii в строке ss, а t_it\_i означает цифру, записанную на позиции ii в строке tt.

В качестве домашнего задания профессор дал каждому студенту строку длины nn и поручил выписать все строки длины nn (а это целых 10n10^n строк) в порядке неубывания цифрового расстояния до данной строки. При равенстве расстояния до двух строк, их следует сравнивать лексикографически.

Поскольку у профессора мало времени, чтобы проконтролировать выполнение всего задания каждым из студентов, он дополнительно сообщил каждому из них число kk и просит лишь сказать ему строку, находящуюся на kk-м месте в выписанной последовательности. Студенты не горят желанием выполнять вручную столь объёмное и монотонное задание, поэтому попросили вас написать программу, которая будет выводить ответ по заданной строке и числу kk.

입력

В первой строке входных данных записаны два целых числа nn и kk (1≤n≤200,0001 \leq n \leq 200\\,000, 1≤k≤min⁡(10n,1018)1 \leq k \leq \min(10^{n}, 10^{18})) --- длина строки, выданной профессором, и интересующая профессора позиция в итоговой последовательности.

Во второй строке записана строка, состоящая из nn десятичных цифр.

출력

Выведите строку из nn десятичных цифр, которая будет записана на kk-м месте в интересующей профессора последовательности.

힌트

Во втором примере первые семь слов списка это <<00000>>, <<00001>>, <<00010>>, <<00100>>, <<01000>>, <<10000>> и <<00002>>.

Слово x_1,x_2,…,x_ax\_1, x\_2, \ldots, x\_a не превосходит слова y_1,y_2,…,y_by\_1, y\_2, \ldots, y\_b в лексикографическом порядке если верно одно из двух условий:

  • либо a≤ba \leq b и x_1=y_1,…,x_a=y_ax\_1 = y\_1, \ldots, x\_a = y\_a, то есть первое слово является префиксом второго;
  • либо есть такая позиция 1≤j≤min⁡(a,b)1 \leq j \leq \min(a, b), что x_1=y_1,…,x_j−1=y_j−1x\_1 = y\_1, \ldots, x\_{j-1} = y\_{j-1} и x_j<y_jx\_j < y\_j, то есть, в первой позиции, в которой слова отличаются, в первом слове стоит меньшая буква.

예제3

  1. 예제 1

    입력
    5 1
    00000
    
    예상 출력
    00000
    
  2. 예제 2

    입력
    5 7
    00000
    
    예상 출력
    00002
    
  3. 예제 3

    입력
    3 44
    132
    
    예상 출력
    212