만드는 중입니다

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

순열 마법

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

요약
A에 1부터 M까지의 치환을 적용해 B와 같은 자리를 가장 많이 만들고, 그중 사전순으로 가장 작은 수열을 출력합니다.
난이도

보통10점 중 7점

유형
그래프, 그리디
정답자
아직 제출이 없습니다

문제

길이가 같은 두 수열 A=(a1,…,aN)A = (a_1, \dots, a_N)과 B=(b1,…,bN)B = (b_1, \dots, b_N)이 있다. aia_i는 AA의 ii번째 원소이며, 값은 1 이상 MM 이하의 정수이다. bjb_j도 BB의 jj번째 원소이며 같은 조건을 따른다.

AA에는 마법을 딱 한 번 걸 수 있다. 1부터 MM까지의 정수로 이루어진 순열 P=(p1,…,pM)P = (p_1, \dots, p_M)을 준비하고, ai′=paia'_i = p_{a_i} (1≤i≤N1 \le i \le N)에 따라 AA를 A′A'로 바꾼다.

마법을 걸어 A′A'를 BB에 가깝게 만들려 한다. 두 수열의 거리는 해밍 거리로 정의하며, 대응하는 값이 서로 다른 위치의 개수이다.

가능한 모든 A′A' 중에서 다음 두 조건을 만족하는 수열을 찾아라.

  • 다른 어떤 가능한 A′A'도 BB와의 거리가 이 수열보다 작지 않다.
  • BB와의 거리가 같은 가능한 수열 가운데 사전순으로 가장 작다.

수열 X=(x1,…,xN)X = (x_1, \dots, x_N)이 같은 길이의 Y=(y1,…,yN)Y = (y_1, \dots, y_N)보다 사전순으로 작다는 것은, 모든 j<ij < i에 대해 xj=yjx_j = y_j이고 xi<yix_i < y_i인 인덱스 ii가 존재한다는 뜻이다.

입력

입력은 다음 형식으로 주어진다.

NN MM

a1a_1 …\dots aNa_N

b1b_1 …\dots bNb_N

첫 줄에는 두 정수 NN (1≤N≤100,0001 \le N \le 100{,}000)과 MM (1≤M≤601 \le M \le 60)이 주어진다. 두 수열은 각각 NN개의 값을 가지며, 값은 1 이상 MM 이하이다.

둘째 줄에는 NN개의 정수가 주어지며, ii번째 정수는 aia_i (1≤ai≤M1 \le a_i \le M)이다.

셋째 줄에는 NN개의 정수가 주어지며, ii번째 정수는 bib_i (1≤bi≤M1 \le b_i \le M)이다.

출력

NN개의 정수를 공백으로 구분해 출력한다. ii번째 정수는 위의 모든 조건을 만족하는 수열의 ii번째 원소이다. 각 원소는 정수로 출력한다.

예제2

  1. 예제 1

    입력
    4 3
    2 2 3 3
    2 2 2 2
    
    예상 출력
    1 1 2 2
    
  2. 예제 2

    입력
    5 3
    2 2 3 3 2
    2 2 2 2 3
    
    예상 출력
    3 3 2 2 3