#ATarc062b. [ABC046D] AtCoDeerくんと変なじゃんけん

[ABC046D] AtCoDeerくんと変なじゃんけん

题目描述

シカ的 AtCoDeer 君正在和朋友 TopCoDeer 君进行一场游戏。这场游戏共进行 NN 回合。在每一回合中,每位玩家都可以出“石头”或“布”。不过,每位玩家必须满足以下条件:

(※)在每一回合结束后,(到目前为止出过的“布”的次数)\leq(到目前为止出过的“石头”的次数)。

在这场游戏中,每位玩家的得分为(获胜回合数)-(失败回合数)。AtCoDeer 君拥有特殊能力,在游戏开始前就已经知道了 TopCoDeer 君在 NN 回合中每一回合要出的手。请你为 AtCoDeer 君决定每一回合要出的手,使得 AtCoDeer 君的得分最大化。TopCoDeer 君每一回合要出的手的信息以字符串 ss 给出。ss 的第 ii 个字符(1iN1 \leq i \leq N)为 g 时表示第 ii 回合 TopCoDeer 君出“石头”,为 p 时表示出“布”。

输入格式

输入为以下格式,从标准输入读入。

ss

输出格式

请输出 AtCoDeer 君能够获得的最大得分。

样例 1

输入

gpg

输出

0

样例 2

输入

ggppgggpgg

输出

2

说明/提示

限制条件

  • 1N1051 \leq N \leq 10^5
  • N=sN = |s|
  • ss 的每个字符都是 gp
  • ss 所表示的出手顺序满足条件(※)

样例解释 1

每一回合都和对手出相同的手,可以得到 00 分,这就是最大值。

样例解释 2

例如依次出“石头”、“布”、“石头”、“布”、“石头”、“石头”、“布”、“布”、“石头”、“布”,可以赢 33 次,输 11 次,所以得分为 22,这是最大值。

由 ChatGPT 4.1 翻译