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

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

힙들의 힙

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

요약
k를 1부터 n-1까지 각각에 대해 배열을 k진 힙으로 보고 부모보다 작은 값을 가진 노드의 수를 센다.
난이도

보통10점 중 7점

유형
수학, 완전 탐색, 구현
정답자
아직 제출이 없습니다

문제

n개의 정수로 이루어진 수열 a1,a2,…,ana_1, a_2, \dots, a_n이 주어진다. 이 수열을 그대로 k진 힙의 노드 값으로 놓고, 최소 힙 성질을 깨뜨리는 노드가 몇 개인지 센다.

k진 힙은 내부 노드가 자식을 최대 k개까지 가지는 루트 있는 트리다. 노드 번호는 1번부터 n번까지이고 1번이 루트다. v번 노드는 k(v−1)+2k(v-1)+2번, k(v−1)+3k(v-1)+3번, …\dots, kv+1kv+1번 노드를 자식으로 가진다. 번호가 n보다 큰 자식은 없는 것으로 본다. 그래서 마지막 내부 노드만 자식을 k개보다 적게 가질 수 있다.

루트가 아닌 노드 v의 부모를 p(v)p(v)라 하자. av<ap(v)a_v < a_{p(v)}이면 v는 최소 힙 성질을 깨뜨리는 노드다. k=1,2,…,n−1k = 1, 2, \dots, n-1 각각에 대해 이런 노드가 몇 개인지 구하시오.

입력

첫째 줄에 정수 n이 주어진다. (1≤n≤2000001 \le n \le 200000)

둘째 줄에 수열을 이루는 n개의 정수 a1,a2,…,ana_1, a_2, \dots, a_n이 공백으로 구분되어 주어진다. (−109≤ai≤109-10^9 \le a_i \le 10^9)

출력

n−1n-1개의 정수를 한 줄에 공백 하나로 구분해 출력한다. ii번째 수는 ii진 힙에서 최소 힙 성질을 깨뜨리는 노드의 개수다. n=1n = 1이면 해당하는 k가 없으므로 아무것도 출력하지 않는다.

힌트

아래 그림은 n=5n = 5이고 수열이 1 5 4 3 21\ 5\ 4\ 3\ 2일 때 k=1,2,3,4k = 1, 2, 3, 4인 힙이다. 빨간 노드가 최소 힙 성질을 깨뜨린다.

예제8

  1. 예제 1

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

    입력
    1
    7
    
    예상 출력
  3. 예제 3

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

    입력
    2
    5 3
    
    예상 출력
    1
    
  5. 예제 5

    입력
    6
    4 4 4 4 4 4
    
    예상 출력
    0 0 0 0 0
    
  6. 예제 6

    입력
    8
    8 7 6 5 4 3 2 1
    
    예상 출력
    7 7 7 7 7 7 7
    
  7. 예제 7

    입력
    10
    -3 -3 5 -1000000000 0 7 -3 1000000000 -1 2
    
    예상 출력
    3 2 3 2 1 1 1 1 1
    
  8. 예제 8

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