CF2010C2.Message Transmission Error (hard version)

传统题 时间 2000 ms 内存 256 MiB 9 尝试 22 已通过 6 标签

Message Transmission Error (hard version)

题目描述

某次网络传输中,原本应连续发送两条完全相同的消息 ss。传输可能发生一种重叠错误:第一条消息的一个非空后缀与第二条消息的同长前缀完全相同,这一段会被合并,只保留一次。

设重叠长度为 kk。一次合法错误必须满足:

1k<s1 \le k < |s|

ss 的长度为 kk 的后缀等于它长度为 kk 的前缀。此时接收方得到的字符串为:先保留完整的第一条消息 ss,再接上第二条消息中没有被重叠的部分,即 s[k+1..s]s[k+1..|s|]

例如,连续发送两次 abrakadabra 时:

  • 若重叠长度为 11,接收到 abrakadabrabrakadabra
  • 若重叠长度为 44,接收到 abrakadabrakadabra

给定接收到的非空字符串 tt,判断它是否可能由上述错误产生。若可能,输出任意一个可能的原始消息 ss

两条消息完全重叠,或完全不重叠地直接拼接,都不属于题目所说的错误。

输入格式

输入一行非空字符串 tt

tt 仅由小写英文字母组成,且 t4105|t| \le 4 \cdot 10^5

输出格式

tt 不可能由这种错误产生,输出一行 NO

否则第一行输出 YES,第二行输出任意一个可能的原始消息 ss

若有多种答案,输出任意一种即可。

样例

样例 1

输入:

abrakadabrabrakadabra

输出:

YES
abrakadabra

样例 2

输入:

acacacaca

输出:

YES
acacaca

样例 3

输入:

abcabc

输出:

NO

样例 4

输入:

abababab

输出:

YES
ababab

样例 5

输入:

tatbt

输出:

NO

在线编程 IDE

建议全屏模式获得最佳体验