結果
問題 | No.2064 Smallest Sequence on Grid |
ユーザー |
|
提出日時 | 2022-12-12 19:34:59 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,587 bytes |
コンパイル時間 | 94 ms |
コンパイル使用メモリ | 12,800 KB |
実行使用メモリ | 163,232 KB |
最終ジャッジ日時 | 2024-11-06 18:05:39 |
合計ジャッジ時間 | 7,578 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 11 WA * 4 TLE * 1 -- * 13 |
ソースコード
from dataclasses import dataclass, field from typing import Optional @dataclass class MinimumManager: value: Optional[str] = None idxes: set[int] = field(default_factory=set) def main(): H, W = map(int, input().split()) letters = [list(input()) for _ in range(H)] step_letters = [] for idx_sum in range(H+W-1): step_letters.append([]) for idx_height in range(idx_sum+1): try: step_letters[-1].append(letters[idx_height] [idx_sum-idx_height]) except IndexError: pass strings = "" current_idx = set((0,)) for step_idx, step_letter in enumerate(step_letters): minimum = MinimumManager() for idx in current_idx: if minimum.value is None: minimum.value = step_letter[idx] minimum.idxes = set((idx, )) continue if minimum.value == step_letter[idx]: minimum.idxes.add(idx) elif minimum.value > step_letter[idx]: minimum.value = step_letter[idx] minimum.idxes = set((idx,)) strings += minimum.value current_idx = set() for idx in minimum.idxes: if step_idx < max(W, H) - 1: current_idx.add(idx) current_idx.add(min(idx+1, min(H, W)-1)) else: current_idx.add(min(idx, len(step_letter)-2)) current_idx.add(max(idx-1, 0)) print(strings) if __name__ == "__main__": main()