競技プログラミング日記

主に AtCoder の記事です

AtCoder Beginner Contest 311B

ABC311B

まず \(N = 1\) の場合を考える. vector \(v\) に対して何個 o が連続しているかは, for i in v.size() を回して,\(v[i]\) が o だったら カウント \(cnt\) を増やして,そうで無ければ \(cnt\) を 0 に戻す. \(i\) ごとに chmax(ans, cnt) を行う.

次に,\(N \geq 2\) のときを考える. \(D\) を vector の共通の長さとすれば, 同様に for d in D に対して,次を行う. [ すべての for i in N に対して \(s[i][d] = \) o のとき cnt++, そうでないとき cnt = 0. ]

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

int main() {
  ll n, md;
  cin >> n >> md;
  vector<string> s(n);
  cinv(s);

  ll ans = 0;
  ll con = 0;
  rep(d, md){
    bool any = true;
    rep(i,n){
      if(s[i][d] != 'o') { any = false; break; }
    }
    if(any) con++;
    else con = 0;

    chmax(ans, con);

  }
  cout << ans << endl;

  return 0;
}