CF1203D2 Remove the Substring (hard version)
题目描述
**请注意:本题的简单版和困难版之间的唯一区别是字符串的长度限制。**
给你一个字符串$s$和一个字符串$t$,两者都只包含小写字母。你可以通过从$s$中删除一些字符(不必连续,可不删除)而不改变剩余字符的顺序(换句话说,删除一些字符后$t$仍然是$s$的子序列),保证最初$t$是$s$的子序列。
例如,字符串"`test`", "`tst`", "`tt`", "`et`"和""都是字符串"`test`"的子序列,而"`tset`", "`se`", "`contest`"都不是字符串"`test`"的子序列。
您希望从s中删除一些最大可能长度的连续子序列,在删除后t仍将是s的子序列。
如果要删除子串$s[l;r]$,则原字符串$s$将变化为$s_1s_2...s_{l-1}s_{r+1}s_{r+2}...s_{|s|-1}s_{|s|}$ ($|s|$为字符串$s$的长度)。
找到可以删除的连续子字符串的最大可能长度,使得删除后$t$仍将是$s$的子序列。
输入格式
第一行包含一个由小写拉丁字母组成的字符串$s$。第二行包含一个由小写字母组成的字符串$t$。($1\leq |s|,|t|\leq 2\times 10^5$),保证$t$是$s$的子序列。
输出格式
输出一个整数,即可以删除的子字符串的最大可能长度,使得$t$仍将是$s$的子序列。