题目描述
Jill 和 Jane 是姐妹。去年圣诞节,她们每人都得到了一串彩色珠子。我们可以用英文字母(“a”...“z”)来描述每种颜色,并将每串珠子描述为一个字符串。
姐妹俩想用她们的字符串制作项链。她们可以通过从字符串的两端移除一些(可能为零)珠子,然后将剩余部分的首尾相连来制作项链。制作出的项链可以旋转或翻转。
姐妹俩希望她们的项链看起来完全一样,并且尽可能长。她们能达到的最大长度是多少?
输入格式
第一行和第二行各包含一个非空序列,分别描述了 Jill 和 Jane 的字符串,长度均不超过 $N$ 个小写字母。
输出格式
第一行应包含一个正整数:最终每条项链能拥有的最大珠子数量。保证至少可以达到正数长度。
第二行应包含两个整数:项链在 Jill 和 Jane 字符串中的起始位置。如果存在多种可能性,输出其中任意一种即可。位置从左到右编号,从 0 开始。
样例
输入格式 1
zxyabcd yxbadctz
输出格式 1
4 3 2
说明
我们可以这样做: “zxyabcd” → “---abcd” “yxbadctz” → “--badc--” 字符串 “abcd” 和 “badc” 构成的项链是相同的。
子任务
在本题中,如果你的程序在所有测试用例中都能正确找到最长的项链,则获得该测试组的满分。如果对于每个测试用例,找到的项链长度至少为最长可能长度的一半,则获得该测试组 20% 的分数。
测试组满足以下条件:
- (25 分) $N = 100$。
- (20 分) $N = 400$。
- (40 分) $N = 3000$。
- (15 分) $N = 3000$。
最后一组是一个特殊情况。它具有与上述相同的时间限制,但你的解决方案只允许使用 4 MiB 的内存。由于技术限制,该子任务在评测服务器上被定义为一个单独的任务(necklace4),你应该分别向 necklace1 和 necklace4 提交你的解决方案。
对于 C 和 C++ 解决方案,直接应用 4 MiB 的内存限制。对于 Java 和 Python 解决方案,评测服务器强制执行的内存限制为“Hello world”程序内存需求之上增加 4 MiB。对于 Java,还会传递 -Xmx4224k -Xss256k -XX:MaxMetaspaceSize=8704k 命令行选项,以告知 JVM 垃圾回收器相关限制。