競技プログラミング日記

主に AtCoder の記事です

AtCoder Beginner Contest 332C問題

ABC332C

解法

シミュレーションというか,貪欲法.
気を付けることは, 無地のシャツを買う必要はないので,足りないときは印刷されてる方だけ買う. 洗濯したら枚数を回復するので,今持っているシャツの枚数をそれぞれ記録しておく.
最後に,印刷したシャツの枚数が,買った枚数の答え.

使っている記号,マクロ等 "https://ecsmtlir.hatenablog.com/entry/2022/12/23/131925"

int main() {
  ll n,m;
  cin >> n >> m;
  string s; cin >> s;

  ll x_ma = m, y_ma = 0;
  ll x = m, y = 0;
  rep(i,n){
    if(s[i] == '0'){
      x = x_ma;
      y = y_ma;
    }else if(s[i] == '1'){
      if(x > 0) x--;
      else if(y > 0) y--;
      else {
        y_ma++;
      }
    }else if(s[i] == '2'){
      if(y > 0) y--;
      else {
        y_ma++;
      }
    }
  }
  cout << y_ma << endl;

  return 0;
}