結果
| 問題 |
No.2454 Former < Latter
|
| コンテスト | |
| ユーザー |
detteiuu
|
| 提出日時 | 2024-12-22 07:08:36 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 507 ms / 2,000 ms |
| コード長 | 793 bytes |
| コンパイル時間 | 372 ms |
| コンパイル使用メモリ | 82,256 KB |
| 実行使用メモリ | 78,732 KB |
| 最終ジャッジ日時 | 2024-12-22 07:08:41 |
| 合計ジャッジ時間 | 4,352 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| 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()
Z = z_algo(S)
ans = 0
for i in range(1, N):
if i < Z[i]:
ans += 1
continue
if i == Z[i] and i+Z[i] < N:
ans += 1
continue
if i == Z[i]:
continue
if i+Z[i] == N:
continue
if S[Z[i]] < S[i+Z[i]]:
ans += 1
print(ans)
detteiuu