結果
問題 | No.2454 Former < Latter |
ユーザー | ntuda |
提出日時 | 2023-09-04 23:51:12 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 449 ms / 2,000 ms |
コード長 | 719 bytes |
コンパイル時間 | 527 ms |
コンパイル使用メモリ | 82,944 KB |
実行使用メモリ | 78,848 KB |
最終ジャッジ日時 | 2024-06-22 21:05:11 |
合計ジャッジ時間 | 3,123 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 23 |
ソースコード
def z_algo(S): N = len(S) A = [0] * N i = 1; j = 0 A[0] = l = len(S) while i < l: while i + j < l and S[j] == S[i + j]: j += 1 if not j: i += 1 continue A[i] = j k = 1 while l - i > k < j - A[k]: A[i + k] = A[k] k += 1 i += k; j -= k return A T = int(input()) for _ in range(T): N = int(input()) S = input() A = z_algo(S) ans = 0 for i in range(1, N): j = A[i] if i < j: ans += 1 elif i + j < N: if i == j: ans += 1 elif S[j] < S[i + j]: ans += 1 print(ans)