Skip to content

Commit

Permalink
upd
Browse files Browse the repository at this point in the history
  • Loading branch information
EndlessCheng committed Feb 22, 2024
1 parent f7ed2e2 commit a99ee97
Showing 1 changed file with 12 additions and 22 deletions.
34 changes: 12 additions & 22 deletions main/edu/2/zfunction/step4/c/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,44 +7,34 @@ import (
"os"
)

// github.com/EndlessCheng/codeforces-go
// https://space.bilibili.com/206214
func run(_r io.Reader, _w io.Writer) {
in := bufio.NewReader(_r)
out := bufio.NewWriter(_w)
defer out.Flush()
min := func(a, b int) int {
if a < b {
return a
}
return b
}
max := func(a, b int) int {
if a > b {
return a
}
return b
}

var T int
var s []byte
for Fscan(in, &T); T > 0; T-- {
Fscan(in, &s)
n := len(s)
z := make([]int, n)
d := make([]int, n)
for i, l, r := 1, 0, 0; i < n; i++ {
z[i] = max(0, min(z[i-l], r-i+1))
diff := make([]int, n)
l, r := 0, 0
for i := 1; i < n; i++ {
if i <= r {
z[i] = min(z[i-l], r-i+1)
}
for i+z[i] < n && s[z[i]] == s[i+z[i]] {
l, r = i, i+z[i]
z[i]++
}
d[0]++
d[z[i]]--
diff[z[i]]--
}
c := 1
for _, v := range d {
c += v
Fprint(out, c, " ")
sumD := n
for _, d := range diff {
sumD += d
Fprint(out, sumD, " ")
}
Fprintln(out)
}
Expand Down

0 comments on commit a99ee97

Please sign in to comment.