Extra
Time
HASHIT Time:2s Memory:256M AC:0% Submit:5

题目描述
你有一个字符串\(S\),一开始为空串,要求支持两种操作:

在\(S\)后面加入字母\(c\)。

删除\(S\)最后一个字母。

问每次操作之后\(S\)有多少个两两不同的连续子串。

输入描述
    
    一行一个字符串\(Q\),表示对\(S\)的操作。如果第\(i\)个字母是个小写字母\(c\),表示第一种加字母\(c\)的操作,如果为\(-\),表示删除操作。保证所有删除操作前\(S\)都非空。
    
输出描述
    
    输出\(|Q|\)行,第\(i\)行表示\(i\)个操作之后\(S\)内有多少不同的子串。
    
数据范围
    
    对于\(20\%\)的操作,\(|Q| \leq 100\)。
    
    对于\(50\%\)的操作,\(|Q| \leq 5000\)。
    
    对于\(100\%\)的操作,\(|Q| \leq 10^5\)。
    
样例输入
            aba-caba
样例输出
        1
        3
        5
        3
        6
        9
        12
        17