結果
問題 |
No.3134 二分探索木
|
ユーザー |
![]() |
提出日時 | 2025-04-29 15:44:15 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 672 ms / 2,000 ms |
コード長 | 540 bytes |
コンパイル時間 | 275 ms |
コンパイル使用メモリ | 12,416 KB |
実行使用メモリ | 52,724 KB |
最終ジャッジ日時 | 2025-04-29 23:37:30 |
合計ジャッジ時間 | 7,469 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 15 |
ソースコード
N = int(input()) A = list(map(int, input().split())) D = [0] * (N+1) for i, v in enumerate(A): D[v] = i parent = [0] * (N+1) for i in range(1, N): if D[i] < D[i+1]: parent[i+1] = i else: j = i while 1: if parent[j] == 0: parent[j] = i+1 break elif D[parent[j]] < D[i+1]: parent[i+1] = parent[j] parent[j] = i+1 break else: j = parent[j] B = [0] * N for i in range(1, N): B[i] = B[D[parent[A[i]]]] + 1 print(*B) C = [0] * N for i in range(N-1, 0, -1): C[D[parent[A[i]]]] += 1 + C[i] print(*C)