Byteasar 在 Byteburg 开了一家糖果店。所有的孩子都喜欢甜食,但小 Byteburger 们最喜欢的是草莓香草味糖果棒。这些糖果棒由交替的口味(香草和草莓)的片段组成,得益于 Byteasar 的秘方,这些片段的长度可以是任意的。
Bitie 和 Bytie 经常光顾这家店,每次每人买一根著名的糖果棒。除非 Byteasar 卖给他们的两块糖果是“口味等价”的,即草莓味片段的总长度相同,且香草味片段的总长度也相同,否则孩子们会立刻争论哪一块更好。孩子们不太在意片段的实际排列——对他们来说,每种口味的总量才是最重要的。
Bitie 和 Bytie 现在正走进店里,而 Byteasar 手头正好只有两根长糖果棒。他打算折断这两根糖果棒(同时进行,一手一根!),使得 Bitie 得到第一根糖果棒的一块,而 Bytie 得到第二根糖果棒的一块,并且这两块糖果是口味等价的。Byteasar 可以给每个孩子他所对应糖果棒的任意连续(即未折断的)片段。为此,他可以在任何位置多次折断糖果棒,而不一定非要在片段的边界处折断。
请帮助 Byteasar 确定他应该如何折断每根糖果棒,以便他卖给两个孩子每人一块,使得这两块糖果口味等价,且它们的(共同)长度最大化。
输入格式
两根长糖果棒的描述依次通过标准输入给出,每根糖果棒的格式如下: 第一行包含一个正整数 $m$,表示该糖果棒的片段数量。接下来 $m$ 行,第 $i$ 行包含一个字符 $t_i$ 和一个正整数 $a_i$,中间用空格隔开。字符 $t_i$ 指定了片段的口味:'T' 代表草莓(波兰语为 truskawka),'W' 代表香草(波兰语为 wanilia)。数字 $a_i$ 指定了片段的长度(以厘米为单位)。你可以假设相邻两个片段的口味不同。
输出格式
你的程序应向标准输出打印一个整数(占一行):可以从每根糖果棒上折下的口味等价片段的最大(共同)长度。
样例
输入格式 1
3 T 5 W 7 T 4 3 W 6 T 6 W 6
输出格式 1
13
说明
Byteasar 可以卖给孩子们每块 7 厘米香草味和 6 厘米草莓味的糖果。从第一根糖果棒中,他应该丢弃 3 厘米的草莓味部分(可以任意分布在两端),而从第二根糖果棒中,他应该丢弃 5 厘米的香草味部分(同样可以任意分布在两端)。
样例测试
1ocen:第一根糖果棒的第一段是 30 厘米的香草味,后续片段长度均为 1 厘米;第二根糖果棒由交替的草莓和香草片段组成,长度分别为 1 厘米和 2 厘米。第一根糖果棒包含 5 个片段,第二根包含 8 个片段。正确答案为 8。
2ocen:每根糖果棒各有 10 个片段,草莓和香草交替。第一根糖果棒的片段长度依次为 (1, 2, 3, ..., 10),第二根为 (10, 9, 8, 7, 6, 1, 2, 3, 4, 5)。正确答案为 50。
3ocen:每根糖果棒各有 1000 个片段,第一根以草莓开头,第二根以香草开头,且每根糖果棒的所有片段长度均为 1 厘米。正确答案为 1000。
评分标准
测试集由以下子任务组成。每个子任务内可能包含多个测试点。 下表中,$m_{\max}$ 表示糖果棒的最大片段数,$n_{\max}$ 表示糖果棒的最大长度。在每个测试点中,均满足 $n_{\max} \le 10^9$,$m_{\max} \le 1000$。
| 子任务 | 属性 | 分值 |
|---|---|---|
| 1 | $n_{\max} \le 150$ | 8 |
| 2 | $n_{\max} \le 3000$ | 12 |
| 3 | $n_{\max} \le 500\,000, m_{\max} \le 150$ | 12 |
| 4 | $m_{\max} \le 150$ | 8 |
| 5 | $n_{\max} \le 500\,000, m_{\max} \le 300$ | 15 |
| 6 | $m_{\max} \le 300$ | 9 |
| 7 | $n_{\max} \le 500\,000$ | 21 |
| 8 | 无额外限制 | 15 |