アゴドリルの備忘録

まったり競技プログラミングとCTFなど

ABC052B Increment Decrement

Virtual Contestやったので書く

方針

問題にもある通り、sのi番目がIかDかを見て、xの値を変えていく
この際、最大値を保持する変数を1個用意してそこに最大値を保持する
(以下のコードの場合、ans)
xの値とansの値を比較してxのほうが大きい場合はansにxを代入することで最大値をとることができる

コード

#include <iostream>
#include <string>

using namespace std;

int main(){
    int n,x=0;
    string s;

    int ans=0;//最大値を保持する変数

    cin>>n>>s;

    for(int i=0;i<n;i++){
        if(s[i]=='I')x++;
        else if(s[i]=='D')x--;

        if(x>ans){//xの値が現在の最大値より大きいとき、最大値を更新する
            ans=x;
        }
    }
    cout<<ans<<endl;
    return 0;
}