CSES - String Functions | Các hàm của xâu

Xem PDF

Điểm: 1600 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Xét một xâu có độ dài \(n\), bắt đầu đếm từ 1. Nhiệm vụ của bạn là tính tất cả giá trị của hai hàm sau:

  • \(z(i)\) là độ dài lớn nhất của xâu con bắt đầu tại vị trí \(i\), và đồng thời xâu con này cũng là tiền tố của xâu ban đầu. Ta định nghĩa \(z(1)=0\).
  • \(\pi(i)\) là độ dài lớn nhất của xâu con kết thúc ở vị trí \(i\), đồng thời cũng là tiền tố của xâu ban đầu, và có độ dài không vượt quá \(i-1\).

Hàm \(z\) được dùng trong thuật toán Z-algorithm, còn hàm \(\pi\) được dùng trong thuật toán KMP.

Input

  • Dòng đầu tiên và duy nhất của input gồm 1 xâu có độ dài \(n\), gồm các kí tự in thường a - z.

Output

In ra hai dòng, mỗi dòng gồm \(n\) giá trị:

  • Dòng thứ nhất chứa \(n\) số nguyên ứng với các giá trị của hàm \(z\).
  • Dòng thứ hai chứa \(n\) số nguyên ứng với các giá trị của hàm \(\pi\).

Constraints

  • \(1 \leq n \leq 10^6\)

Example

Test 1

Input

abaabca

Output

0 0 1 2 0 0 1
0 0 1 1 2 0 1


Bình luận

Không có bình luận nào.