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

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

순열 그래프

면접 대비

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

요약
1부터 n까지의 두 순열을 두 평행선 위에 놓고 같은 수를 이은 선분들 가운데 서로 교차하는 쌍의 개수를 셉니다.
난이도

보통10점 중 5점

유형
분할 정복, 정렬
정답자
아직 제출이 없습니다

문제

그래프 GG는 정점의 집합 VV와 간선의 집합 EE로 이루어지고, G=(V,E)G = (V, E)로 쓴다. 보통은 두 집합을 그대로 나열해서 그래프를 정의하지만, 간선을 나열하는 대신 만드는 규칙만 정해 두는 그래프도 있다. 순열 그래프가 그렇다.

{1,2,…,n}\{1, 2, \dots, n\}의 순열 두 개를 준비한다. 평행한 직선을 두 개 긋고, 위쪽 직선에는 첫 번째 순열의 순서대로, 아래쪽 직선에는 두 번째 순열의 순서대로 숫자를 왼쪽부터 놓는다. 그 다음 같은 숫자끼리 선분으로 잇는다. 이렇게 그은 선분 중 서로 교차하는 쌍이 순열 그래프의 간선이 되고, 정점은 11부터 nn까지의 숫자다.

두 순열이 (2,5,4,1,3)(2, 5, 4, 1, 3)과 (1,5,3,2,4)(1, 5, 3, 2, 4)인 경우 교차하는 선분의 쌍은 여섯 개이므로, 순열 그래프는 V={1,2,3,4,5}V = \{1, 2, 3, 4, 5\}, E={(1,2),(1,4),(1,5),(2,3),(2,5),(3,4)}E = \{(1,2), (1,4), (1,5), (2,3), (2,5), (3,4)\}가 된다.

{1,2,…,n}\{1, 2, \dots, n\}의 순열 두 개가 주어졌을 때, 두 순열로 만든 순열 그래프의 간선의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. 각 테스트 케이스는 세 줄이다. 첫째 줄에 nn이 주어지고 (1≤n≤100,000)(1 \le n \le 100{,}000), 둘째 줄과 셋째 줄에 순열이 하나씩 주어진다. 두 순열 모두 {1,2,…,n}\{1, 2, \dots, n\}의 순열이고, 원소는 공백으로 구분된다.

출력

각 테스트 케이스마다 두 순열로 만든 순열 그래프의 간선의 개수를 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    3
    5
    2 5 4 1 3
    1 5 3 2 4
    7
    5 6 7 1 2 3 4
    5 6 7 1 2 3 4
    7
    1 5 3 4 2 7 6
    7 1 5 3 4 2 6
    
    예상 출력
    6
    0
    5