結果
| 問題 | No.3392 Count 23578 Sequence |
| コンテスト | |
| ユーザー |
detteiuu
|
| 提出日時 | 2025-11-28 22:57:37 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 475 ms / 2,000 ms |
| コード長 | 887 bytes |
| コンパイル時間 | 272 ms |
| コンパイル使用メモリ | 81,968 KB |
| 実行使用メモリ | 311,872 KB |
| 最終ジャッジ日時 | 2025-11-28 23:31:42 |
| 合計ジャッジ時間 | 24,030 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 48 |
ソースコード
def Manacher(S):
C = [-1]
for s in S:
C.append(s)
C.append(-1)
R = [0]*len(C)
i = 0
j = 0
while i < len(C):
SUM = -1
if i%2 == 0:
if 1 <= i and i+1 < len(C):
SUM = C[i-1]+C[i+1]
else:
SUM = C[i]*2
while 0 <= i-j and i+j < len(C) and (C[i-j]+C[i+j] == SUM or C[i-j] == -1):
j += 1
R[i] = j
k = 1
while 0 <= i-k and k+R[i-k] < j:
R[i+k] = R[i-k]
k += 1
i += k
j -= k
odd = []
even = []
for i in range(1, len(C)-1):
if i%2 == 1:
odd.append(R[i]//2)
else:
even.append(R[i]//2)
return odd, even
N = int(input())
A = list(map(int, input().split()))
odd, even = Manacher(A)
ans = 0
for o in odd:
ans += o
for e in even:
ans += e
print(ans)
detteiuu