Đống của những chiếc đống
Đề bài
Mô tả
Cho một mảng gồm số nguyên .
Với một số nguyên cho trước, ta xây dựng một đống (heap) -phân trên mảng: coi các phần tử của mảng là các đỉnh của một cây có gốc, đánh số từ đến . Các con của đỉnh là những đỉnh có chỉ số (nếu chỉ số vượt quá thì con tương ứng không tồn tại). Đỉnh là gốc và không có cha; mọi đỉnh khác đều có đúng một cha. Gọi là chỉ số cha của đỉnh .
Một đỉnh không phải gốc được gọi là vi phạm tính chất đống nếu (giá trị của nó nhỏ hơn giá trị của cha).
Với mỗi giá trị từ đến , hãy đếm số đỉnh vi phạm tính chất đống trong đống -phân dựng trên mảng đã cho.
Dữ liệu vào
- Dòng đầu chứa số nguyên .
- Dòng thứ hai chứa số nguyên .
Dữ liệu ra
In ra số nguyên, cách nhau bởi dấu cách: số thứ là số đỉnh vi phạm tính chất đống trong đống -phân, với .
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 5 1 5 4 3 2 |
3 2 1 0 | Với cây là một đường thẳng . Cha của đỉnh lần lượt có giá trị , còn giá trị của chúng là đều nhỏ hơn cha nên cả ba đều vi phạm, cho kết quả . Khi tăng, cây thấp và rộng hơn nên số vi phạm giảm dần về . |
| 6 2 2 2 2 2 2 |
0 0 0 0 0 | Mọi phần tử bằng nhau nên không có đỉnh nào nhỏ hơn cha của nó. |
| 5 934 235 171 111 197 |
3 4 4 4 | Số vi phạm không nhất thiết giảm khi tăng. |
Bình luận