페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#3998

능력주의 회사 2s 512MB

문제

능력을 최우선으로 생각하는 스타트업 회사 매리토크라시는 1…N으로 번호가 매겨진 N명의 직원들이 있다. 그 중 1번은 대표다.

대표를 제외한 각 직원들은 한 명의 직속 상사가 있고, 각 직원 i는 자신의 업무를 얼마나 잘 수행하는지를 나타내는 고유한 숙련도 등급 p(i)를 가지고 있다. 직원 i가 직원 j의 직속 상사의 직속 상사라면 ji의 부하 직원이다.

불행하게도 직원들은 직속 상사가 부하 직원 몇 명보다 능력이 떨어지는 경우가 많다는 사실을 알게 되었다. 이 경우 직속 상사는 부하 직원 중 일부를 승진시키는 것을 고려해야 한다.

당신의 임무는 직원들이 언제 이런 일이 일어나는지 알아내도록 돕는 것이다. 회사의 각 직원 i에 대해 p(j)>p(i)인 부하 직원 j의 수를 세는 프로그램을 작성하자.


입력

첫 줄에 N이 주어진다. (1 ≤ N ≤ 100,000)

다음 N줄에 1\ ...\ N번 직원들의 숙련도 등급인 p(1) \ldots p(N)가 주어진다. 각 p(i)1 \ldots 1,000,000,000의 범위 안의 중복되지 않는 고유한 정수이다.

그 다음 N-1줄에 2 \ldots N번 직원의 직속 상사가 주어진다. 1번 직원은 대표이기에 직속 상사가 존재하지 않는다.


출력

N줄에 걸쳐 i번째 줄에 i번 직원의 부하 직원 중 숙련도 등급이 i번 직원보다 더 높은 직원의 수를 출력한다.


예제

5
804289384
846930887
681692778
714636916
957747794
1
1
2
3
2
0
1
0
0


출처

USACO 2017 January Platinum

로그인해야 코드를 작성할 수 있어요.