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

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

Максимизация выигрыша

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

요약
각각 y의 비용이 드는 인접 교환으로 n자리 수의 숫자를 재배열해 값에서 총 벌점을 뺀 이익을 최대화하고, 그중 가장 큰 수를 구한다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 동적 계획법, 배열
정답자
아직 제출이 없습니다

문제

Дано целое неотрицательное число xx, состоящее из nn десятичных цифр. В нём можно произвольное число раз поменять местами две соседние цифры. За каждый обмен начисляется штраф равный yy. После выполнения обменов начисляется бонус, равный получившемуся из xx числу x_newx\_{new}. Таким образом, если в результате kk обменов получено число x_newx\_{new}, выигрыш равен x_new−kyx\_{new} - ky.

Будем называть число x_newx\_{new} оптимальным, если его можно получить из xx в результате обменов, добившись при этом максимального возможного выигрыша.

По заданным xx и yy определите наибольшее среди оптимальных чисел.

입력

В первой строке дано одно целое число xx, состоящее из nn десятичных цифр (1≤n≤100,0001 \le n \le 100\\,000). Число xx может иметь ведущие нули.

Во второй строке дано одно целое число yy --- штраф за один обмен цифр (1≤y≤10161 \le y \le 10^{16}).

출력

Выведите единственное целое число x_newx\_{new} --- наибольшее среди оптимальных чисел. Число x_newx\_{new} должно иметь длину nn и может содержать ведущие нули.

힌트

В первом примере после обмена цифр 11 и 77 получается число 710710, выигрыш равен 710−15=695710-15=695.

Во втором примере менять цифры местами не выгодно, если оставить число как есть, выигрыш равен 170170, а если поменять, то выигрыш будет равен 710−600=110<170710-600=110 < 170.

예제4

  1. 예제 1

    입력
    170
    15
    
    예상 출력
    710
    
  2. 예제 2

    입력
    170
    600
    
    예상 출력
    170
    
  3. 예제 3

    입력
    314599
    17713
    
    예상 출력
    931459
    
  4. 예제 4

    입력
    001
    1000
    
    예상 출력
    001