結果
問題 |
No.1512 作文
|
ユーザー |
![]() |
提出日時 | 2025-06-12 13:49:27 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 535 ms / 2,000 ms |
コード長 | 952 bytes |
コンパイル時間 | 204 ms |
コンパイル使用メモリ | 82,956 KB |
実行使用メモリ | 139,788 KB |
最終ジャッジ日時 | 2025-06-12 13:49:46 |
合計ジャッジ時間 | 5,976 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 38 |
ソースコード
def is_good(s): for i in range(1, len(s)): if s[i] < s[i-1]: return False return True def main(): import sys input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]) ptr += 1 strings = [] for _ in range(N): s = input[ptr] ptr += 1 if is_good(s): start = s[0] end = s[-1] length = len(s) strings.append((start, end, length)) # Sort by end, then by start strings.sort(key=lambda x: (x[1], x[0])) dp = [0] * 26 for (start, end, length) in strings: s_char = ord(start) - ord('a') e_char = ord(end) - ord('a') max_prev = 0 for c in range(s_char + 1): if dp[c] > max_prev: max_prev = dp[c] new_val = max_prev + length if new_val > dp[e_char]: dp[e_char] = new_val print(max(dp)) if __name__ == "__main__": main()