👌

ABC 107 | B - Grid Compression

2020/11/10に公開

問題

https://atcoder.jp/contests/abc107/tasks/abc107_b

考えたこと

以下のように行と列で白色のみかどうかを記録しておく。

出力するときに白の行もしくは白の列なら出力しないようにすればいい。

コード

実装時のTips

  • 別の配列に入れる必要はなく入力をそのまま出力に使える
#include <bits/stdc++.h>

#include <atcoder/all>

using namespace std;
using namespace atcoder;
using ll = long long;
using ld = long double;
using uint = unsigned int;
using ull = unsigned long long;
const int MOD = 1e9 + 7;

int main() {
  ll h, w;
  cin >> h >> w;
  vector<bool> bh(h);  // 黒い行
  vector<bool> bw(w);  // 黒い列
  vector<vector<char>> a(h, vector<char>(w));
  for (int i = 0; i < h; i++) {
    for (int j = 0; j < w; j++) {
      cin >> a[i][j];
      if (a[i][j] == '#') {
        bh[i] = true;
        bw[j] = true;
      }
    }
  }
  for (int i = 0; i < a.size(); i++) {
    if (!bh[i]) {
      continue;
    }
    for (int j = 0; j < a[i].size(); j++) {
      if (!bw[j]) {
        continue;
      }
      cout << a[i][j];
    }
    cout << endl;
  }
}

参考

Discussion