#abc141e. [abc141_e]Who Says a Pun?

[abc141_e]Who Says a Pun?

题目描述

给定一个长度为 NN 的字符串 SS

找出在 SS 中作为连续子字符串出现两次或更多的非空字符串的最大长度(不能重叠)。

更正式地说,找到最大的正整数 lenlen,使存在整数 l1l_1l2l_21l1,l2Nlen+11 \leq l_1, l_2 \leq N - len + 1),满足以下条件:

  • l1+lenl2l_1 + len \leq l_2
  • 对于 0i<len0 \leq i < len,有 S[l1+i]=S[l2+i]S[l_1+i] = S[l_2+i]

如果不存在这样的整数 lenlen,则输出 00

约束条件

  • 30%的数据2N10030\%的数据2 \leq N \leq100 100%的数据2N5×103 100\%的数据2 \leq N \leq 5 \times 10^3
  • S=N|S| = N
  • SS 由小写英文字母组成。

输入格式

NN SS

输出格式

输出符合条件的在 SS 中作为连续子字符串出现两次或更多的非空字符串的最大长度。如果没有符合条件的非空字符串,则输出 00

示例输入1

5
ababa

示例输出1

2

满足条件的字符串包括:ababba。它们中最长的长度是 22,即为所求答案。注意,abaSS 中作为连续子字符串出现了两次,但是在题目中并不存在满足 l1+lenl2l_1 + len \leq l_2 的整数对 l1l_1l2l_2

示例输入2

2
xy

示例输出2

0

没有符合条件的非空字符串。

示例输入3

13
strangeorange

示例输出3

5