만드는 중입니다

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

Permutant

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

요약
첫 행이 a이고 각 행이 이전 행에 순열 π를 적용한 n×n 행렬의 행렬식을 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 7점

유형
행렬, 정수론, 수학
정답자
아직 제출이 없습니다

문제

n×nn \times n 행렬 AA를 생각한다. Aj(i)A_j^{(i)}는 ii행 jj열의 원소를 나타낸다. 수열 a1,…,ana_1, \dots, a_n과 순열 π1,…,πn\pi_1, \dots, \pi_n이 주어진다. 첫 번째 행은 수열 aa로 채운다. Ak(1)=akA_k^{(1)} = a_k 그 다음 행은 바로 윗행에 순열 πk\pi_k를 적용해서 만든다. Ak(i)=Aπk(i−1)A_k^{(i)} = A_{\pi_k}^{(i-1)} 행렬 AA의 행렬식 det⁡A\det A를 구한다. 값이 매우 클 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

입력

첫 줄에 정수 nn (1≤n≤50001 \le n \le 5000)이 주어진다. 둘째 줄에 정수 a1,…,ana_1, \dots, a_n (1≤ai≤1091 \le a_i \le 10^9)이 주어진다. 셋째 줄에 서로 다른 정수 π1,…,πn\pi_1, \dots, \pi_n (1≤πi≤n1 \le \pi_i \le n)이 주어진다.

출력

답 하나를 출력한다.

힌트

행렬식은 다음과 같이 정의된다. det⁡A=∑σ∈Snsgn(σ)∏i=1nAσi(i)\det{A} = \sum_{\sigma \in S_n}{\text{sgn}(\sigma)} \prod_{i=1}^{n}{A_{\sigma_i}^{(i)}} 여기서 SnS_n은 {1,…,n}\{1, \dots, n\}의 모든 순열의 집합이고, sgn(σ)\text{sgn}(\sigma)는 σ\sigma의 부호이다. 역순서쌍의 개수가 홀수이면 −1-1, 짝수이면 +1+1이다. 역순서쌍은 i<ji < j이면서 σi>σj\sigma_i > \sigma_j인 인덱스 쌍 (i,j)(i, j)이다.

예제2

  1. 예제 1

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

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