만드는 중입니다

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

승진 카운팅

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

요약
루트가 있는 트리에서 각 노드보다 값이 큰 자손의 수를 센다.
난이도

보통10점 중 7점

유형
트리, DFS, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

소들이 또다시 스타트업을 차리려 한다. 소는 형편없는 관리자라는 사실을 지난 경험에서 배우지 못한 것이다!

소들에게는 1부터 NN까지 번호가 붙어 있다 (1≤N≤100,0001 \le N \le 100{,}000). 회사는 트리 구조로 조직되며, 1번 소가 사장(트리의 루트)이다. 사장을 제외한 모든 소에게는 관리자가 정확히 한 명 있다(트리에서의 "부모"). 소 ii에게는 업무 능력을 나타내는 능력치 p(i)p(i)가 있으며, 모든 소의 능력치는 서로 다르다. 소 ii가 소 jj의 조상이면(예를 들어 관리자의 관리자의 관리자), jj를 ii의 부하라고 한다.

안타깝게도 관리자가 여러 부하보다 능력치가 낮은 경우가 자주 있고, 이럴 때 관리자는 부하 몇 명을 승진시키는 것을 고려해야 한다. 이런 상황을 파악하도록 소들을 도와주자. 회사의 모든 소 ii에 대해, p(j)>p(i)p(j) > p(i)인 부하 jj의 수를 구하라.

입력

첫째 줄에 NN이 주어진다.

다음 NN개의 줄에는 소들의 능력치 p(1),p(2),…,p(N)p(1), p(2), \ldots, p(N)이 한 줄에 하나씩 주어진다. 각 능력치는 1 이상 1,000,000,000 이하의 정수이며 모두 서로 다르다.

다음 N−1N-1개의 줄에는 2번 소부터 NN번 소까지 각 소의 관리자(부모) 번호가 차례로 주어진다. 1번 소는 사장이므로 관리자가 없다.

출력

NN개의 줄을 출력한다. ii번째 줄에는 소 ii의 부하 중 소 ii보다 능력치가 높은 소의 수를 출력한다.

예제1

  1. 예제 1

    입력
    5
    804289384
    846930887
    681692778
    714636916
    957747794
    1
    1
    2
    3
    
    예상 출력
    2
    0
    1
    0
    0