結果
問題 |
No.318 学学学学学
|
ユーザー |
![]() |
提出日時 | 2025-03-26 15:56:57 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 232 ms / 2,000 ms |
コード長 | 1,151 bytes |
コンパイル時間 | 428 ms |
コンパイル使用メモリ | 81,888 KB |
実行使用メモリ | 114,244 KB |
最終ジャッジ日時 | 2025-03-26 15:57:15 |
合計ジャッジ時間 | 5,931 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 26 |
ソースコード
import sys from collections import defaultdict def main(): n = int(sys.stdin.readline()) a = list(map(int, sys.stdin.readline().split())) left = defaultdict(lambda: n) right = defaultdict(lambda: -1) for i in range(n): val = a[i] if left[val] == n: left[val] = i if right[val] < i: right[val] = i ts = list(left.keys()) ts.sort(reverse=True) parent = list(range(n + 2)) # 0 to n+1 b = [0] * n for t in ts: l = left[t] r = right[t] if l > r: continue cur = l while cur <= r: current_parent = find_parent(parent, cur) if current_parent > r: break b[current_parent] = t next_parent = find_parent(parent, current_parent + 1) parent[current_parent] = next_parent cur = current_parent + 1 print(' '.join(map(str, b))) def find_parent(parent, x): while parent[x] != x: parent[x] = parent[parent[x]] x = parent[x] return x if __name__ == '__main__': main()