結果
| 問題 | No.3392 Count 23578 Sequence |
| コンテスト | |
| ユーザー |
yt142857
|
| 提出日時 | 2025-11-21 10:12:42 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
AC
|
| 実行時間 | 571 ms / 2,000 ms |
| コード長 | 557 bytes |
| コンパイル時間 | 411 ms |
| コンパイル使用メモリ | 82,184 KB |
| 実行使用メモリ | 299,260 KB |
| 最終ジャッジ日時 | 2025-11-28 23:27:24 |
| 合計ジャッジ時間 | 27,970 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 48 |
ソースコード
n = int(input())
s = [int(_) for _ in input().split()]
sa = []
for i in range(n-1):
sa.append(s[i+1]-s[i])
def manacher(s):
i = 0
j = 0
na = len(s)
m = [0]*na
while i < na:
while i-j >= 0 and i+j < na and s[i-j] == s[i+j]:
j += 1
m[i] = j
k = 1;
while i-k >= 0 and k+m[i-k] < j:
m[i+k] = m[i-k]
k += 1
i += k
j -= k
return m
m = manacher(sa)
ans = sum(m)
new = []
for i in sa:
new.append(i)
new.append('%')
m = manacher(new)
for i in range(len(m)):
if i % 2 == 1:
ans += m[i]//2
print(ans+n)
yt142857