#ATarc099d. [ARC099F] Eating Symbols Hard

[ARC099F] Eating Symbols Hard

题目描述

高桥君脑海中总是浮现着一个长度为 2×109+12 \times 10^9 + 1 的整数序列 $A = (A\_{-10^9}, A\_{-10^9 + 1}, \ldots, A\_{10^9 - 1}, A\_{10^9})$,以及一个整数 PP

一开始,整数序列 AA 的所有元素都是 00,整数 PP 的值也是 00

每当高桥君吃下一个符号 +->< 时,脑海中的整数序列 AA 和整数 PP 会发生如下变化:

  • 吃下 + 时,APA_P 的值加 11
  • 吃下 - 时,APA_P 的值减 11
  • 吃下 > 时,PP 的值加 11
  • 吃下 < 时,PP 的值减 11

高桥君有一个长度为 NN 的字符串 SS,其中每个字符都是 +->< 之一。高桥君可以选择一组整数 (i,j)(i, j),满足 1ijN1 \leq i \leq j \leq N,然后依次吃下 SS 的第 ii 到第 jj 个字符。若吃完后脑海中的整数序列 AA 与高桥君从第 11 个字符开始顺序吃完 SS 的所有符号后得到的 AA 完全相同,则称该组 (i,j)(i, j) 是可行的。

请计算有多少组 (i,j)(i, j) 是可行的。

输入格式

输入从标准输入读取,格式如下:

NN SS

输出格式

请输出答案。

样例 1

输入

5
+>+<-

输出

3

样例 2

输入

5
+>+-<

输出

5

样例 3

输入

48
-+><<><><><>>>+-<<>->>><<><<-+<>><+<<>+><-+->><<

输出

475

说明/提示

限制条件

  • 1N2500001 \leq N \leq 250000
  • S=N|S| = N
  • SS 的每个字符都是 +->< 之一

样例解释 1

高桥君吃完 SS 的所有符号后,A1=1A_1 = 1,其余 AA 的元素全为 00。使 AA 与此相等的 (i,j)(i, j) 有以下几组:

  • (1,5)(1, 5)
  • (2,3)(2, 3)
  • (2,4)(2, 4)

样例解释 2

注意,即使 PP 与高桥君吃完 SS 的所有符号后得到的 PP 不同,也没有关系。

由 ChatGPT 4.1 翻译