結果
問題 |
No.1909 Detect from Substrings
|
ユーザー |
![]() |
提出日時 | 2025-06-12 14:54:41 |
言語 | PyPy3 (7.3.15) |
結果 |
MLE
|
実行時間 | - |
コード長 | 2,282 bytes |
コンパイル時間 | 434 ms |
コンパイル使用メモリ | 82,584 KB |
実行使用メモリ | 848,136 KB |
最終ジャッジ日時 | 2025-06-12 14:57:32 |
合計ジャッジ時間 | 5,470 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 5 MLE * 1 -- * 30 |
ソースコード
def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 M = int(input[idx]) idx += 1 S = [] for _ in range(N): S.append(input[idx]) idx += 1 # Generate all possible T from S[0] s0 = S[0] generated = set() for pos in range(M + 1): for c in 'abcdefghijklmnopqrstuvwxyz': new_t = s0[:pos] + c + s0[pos:] generated.add(new_t) # Check each generated T against all S_i valid_count = 0 for T in generated: valid = True for s in S: # Check if s is a deletion of T i = 0 # index for s j = 0 # index for T skipped = 0 while i < M and j < M + 1: if s[i] == T[j]: i += 1 j += 1 else: j += 1 skipped += 1 if skipped > 1: break # After loop, check if we reached end of s and T with at most one skip if i == M: # Check remaining characters in T (if any) skipped += (M + 1 - j) if skipped <= 1: continue else: valid = False break else: # Check if remaining characters in s can be matched by skipping one more while j < M + 1 and skipped <= 1: if s[i] == T[j]: i += 1 j += 1 if i == M: break else: j += 1 skipped += 1 if i == M and skipped <= 1: # Check if there are remaining characters in T skipped += (M + 1 - j) if skipped <= 1: continue else: valid = False break else: valid = False break if valid: valid_count += 1 print(valid_count) if __name__ == "__main__": main()