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

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

육감

시간 제한5초메모리 제한512 MB

요약
상대가 내는 카드 순서와 미래가 가진 카드 목록이 주어질 때, 가장 많은 트릭을 얻도록 카드 순서를 정하고 동점이면 사전순으로 가장 큰 수열을 출력한다.
난이도

보통10점 중 7점

유형
그리디, 정렬, 배열, 구현
정답자
아직 제출이 없습니다

문제

Ms. Future는 예지 능력을 지녔다. 자신의 행동만 빼고 모든 참가자의 행동을 정확히 예견할 수 있으므로, 당연히 몇몇 카드 게임에서 뛰어난 실력을 보인다. 오늘 그녀는 무모한 도박꾼 Mr. Past의 도전을 받아들였다. 두 사람은 간단한 2인 trick-taking 카드 게임을 하기로 했다.

게임에 쓰는 카드는 한쪽 면에 숫자가 인쇄되어 있고 다른 쪽은 비어 있어 다른 카드와 구별되지 않는다.

게임은 두 참가자에게 같은 수, 이를테면 n장의 카드를 나눠 주면서 시작하고, 인쇄된 숫자는 상대에게 보이지 않는다.

게임은 n번의 트릭으로 이루어진다. 각 트릭에서 두 참가자는 자신의 손에서 카드 한 장을 낸다. 더 큰 숫자의 카드를 낸 참가자가 그 트릭을 가져간다. Ms. Future가 이 게임에 매우 능숙하므로, 두 사람이 같은 숫자의 카드를 냈을 때는 Mr. Past에게 트릭을 주기로 합의했다. 한 번 사용한 카드는 같은 게임에서 다시 사용할 수 없다. 게임은 손에 든 카드를 모두 쓸 때까지 계속된다. 게임의 목표는 최대한 많은 트릭을 가져가는 것이다.

이 문제에서 여러분의 임무는 Ms. Future가 손에 든 카드를 낼 최선의 순서를 정하는 컴퓨터 프로그램을 작성해서 그녀를 돕는 것이다. 그녀에게는 육감이 있으므로, 여러분의 프로그램은 게임 전에는 보통 사람이 쓸 수 없는 정보를 활용할 수 있다.

입력

입력은 다음과 같은 형식의 테스트 케이스 하나로 이루어진다.

n
p1 · · · pn
f1 · · · fn

첫 줄의 n은 트릭의 수이며 2 이상 5000 이하의 정수이다. 둘째 줄은 Mr. Past가 손에 든 카드를 내는 순서를 나타낸다. i번째 트릭에서 그는 숫자 pi인 카드를 낸다 (1 ≤ i ≤ n). 셋째 줄은 Ms. Future의 손을 나타낸다. fi (1 ≤ i ≤ n)는 그녀가 딜러에게서 i번째로 받은 카드에서 볼 숫자이다. 둘째 줄과 셋째 줄의 모든 숫자는 1 이상 10 000 이하의 정수이다. 이 줄에는 같은 숫자가 여러 번 나올 수 있다.

출력

출력은 공백으로 구분된 n개의 정수 a1 · · · an을 한 줄에 담아야 한다. 여기서 ai (1 ≤ i ≤ n)는 가져가는 트릭의 수를 최대로 만들기 위해 i번째 트릭에서 그녀가 내야 하는 카드의 숫자이다. 그러한 숫자열이 둘 이상이면 그중 사전순으로 가장 큰 것을 출력한다.

예제4

  1. 예제 1

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

    입력
    5
    3 4 5 6 7
    1 3 5 7 9
    
    예상 출력
    9 5 7 3 1
    
  3. 예제 3

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

    입력
    5
    3 4 10 4 9
    2 7 3 6 9
    
    예상 출력
    9 7 3 6 2