Nonsense Time

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

요약
무작위 순열의 원소가 한 번에 하나씩 사용 가능해질 때, 매 단계마다 현재 사용 가능한 원소들로 이루어진 최장 증가 부분 수열의 길이를 구한다.
난이도

어려움10점 중 8점

유형
동적 계획법, 이분 탐색, 그리디, 확률
정답자
아직 제출이 없습니다

문제

크기 n인 순열 p1,p2,…,pnp_1, p_2, \ldots, p_n이 주어진다. 처음에는 p의 모든 원소가 얼어 있다. n개의 단계에 걸쳐 원소들이 하나씩 사용 가능해진다. i번째 단계에서 원소 pkip_{k_i}가 사용 가능해진다.

각 i에 대해, 처음 i개의 단계가 끝난 뒤 사용 가능한 원소들 중에서 가장 긴 증가 부분 수열의 길이를 구한다.

입력

입력의 첫 줄에는 테스트 케이스의 수를 나타내는 정수 T (1 ≤ T ≤ 3)가 주어진다.

각 테스트 케이스의 첫 줄에는 순열의 크기를 나타내는 정수 n (1 ≤ n ≤ 50 000)이 주어진다.

각 테스트 케이스의 둘째 줄에는 순열을 나타내는 n개의 서로 다른 정수 p1,p2,…,pnp_1, p_2, \ldots, p_n (1 ≤ pip_i ≤ n)이 주어진다.

각 테스트 케이스의 셋째 줄에는 각 단계를 나타내는 n개의 서로 다른 정수 k1,k2,…,knk_1, k_2, \ldots, k_n (1 ≤ kik_i ≤ n)이 주어진다.

p1,p2,…,pnp_1, p_2, \ldots, p_n과 k1,k2,…,knk_1, k_2, \ldots, k_n은 주어진 크기의 모든 순열 중에서 균등한 무작위로 생성됨이 보장된다.

출력

각 테스트 케이스마다 n개의 정수를 한 줄에 출력한다. i번째 정수는 처음 i개의 단계가 끝난 뒤 사용 가능한 원소들 중에서 가장 긴 증가 부분 수열의 길이이다.

예제1

  1. 예제 1

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