Submission #69714466


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

/////////////////// メイン ///////////////////

int main () {
  
  //////////////////// 入力 ////////////////////

  int h, w;
  cin >> h >> w;

  vector<string> s(h);
  for (int i=0; i<h; i++) {
    cin >> s.at(i);
  }

  //////////////// 出力変数定義 ////////////////

  int result = 0;

  //////////////////// 処理 ////////////////////

  // 今回調査するやつ、次回調査するやつ、塗るの待機してるやつ
  // 重複を省きたいのでvectorじゃなくsetにする
  set<pair<int,int>> s0, s1, s2;

  // とりあえず、最初に黒マスの隣になっているやつを場外含め全部s0に入れる
  for (int i=0; i<h; i++) {
    for (int j=0; j<w; j++) {
      if (s.at(i).at(j)=='#') {
        s0.emplace(i+1,j);
        s0.emplace(i-1,j);
        s0.emplace(i,j+1);
        s0.emplace(i,j-1);
        result++;
      }
    }
  }

  // 「調査予定が最初から空」になるまで調査する
  while (!s0.empty()) {

    // s0の中身全てに対して調査
    for (auto [i,j] : s0) {
      
      // 場外やもともと黒マスならスキップ
      if (i<0||i>=h||j<0||j>=w) continue;
      if (s.at(i).at(j)=='#') continue;

      // 周囲の黒マス数をチェック
      int count = 0;
      if (i>0&&s.at(i-1).at(j)=='#') count++;
      if (i<h-1&&s.at(i+1).at(j)=='#') count++;
      if (j>0&&s.at(i).at(j-1)=='#') count++;
      if (j<w-1&&s.at(i).at(j+1)=='#') count++;

      // 2マス以上あるならスキップ
      // 0であることはないので、ここを通過するのは1のときだけ
      if (count>1) continue;

      // 塗るの待機列に加える
      s2.emplace(i,j);

      // 周囲を次回調査予定に加える
      s1.emplace(i+1,j);
      s1.emplace(i-1,j);
      s1.emplace(i,j+1);
      s1.emplace(i,j-1);

    }

    // 待機列のやつを全部塗る
    for (auto [i,j] : s2) {
      s.at(i).at(j) = '#';
      result++;
    }
    s2.clear();

    // 次回調査予定を今回用に移動、次回用は空にする
    swap(s0,s1);
    s1.clear();
    
  }

  //////////////////// 出力 ////////////////////

  cout << result << endl;

  //////////////////// 終了 ////////////////////

  return 0;

}

Submission Info

Submission Time
Task D - Ulam-Warburton Automaton
User wightou
Language C++ 23 (gcc 12.2)
Score 425
Code Size 2373 Byte
Status AC
Exec Time 153 ms
Memory 25380 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 425 / 425
Status
AC × 3
AC × 40
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3444 KiB
00_sample_01.txt AC 1 ms 3596 KiB
00_sample_02.txt AC 1 ms 3532 KiB
01_test_00.txt AC 107 ms 22132 KiB
01_test_01.txt AC 35 ms 9280 KiB
01_test_02.txt AC 42 ms 10644 KiB
01_test_03.txt AC 77 ms 17836 KiB
01_test_04.txt AC 106 ms 19432 KiB
01_test_05.txt AC 107 ms 21400 KiB
01_test_06.txt AC 116 ms 21448 KiB
01_test_07.txt AC 107 ms 20364 KiB
01_test_08.txt AC 147 ms 22428 KiB
01_test_09.txt AC 145 ms 25380 KiB
01_test_10.txt AC 79 ms 5520 KiB
01_test_11.txt AC 99 ms 5796 KiB
01_test_12.txt AC 111 ms 6188 KiB
01_test_13.txt AC 115 ms 6564 KiB
01_test_14.txt AC 123 ms 6556 KiB
01_test_15.txt AC 131 ms 7888 KiB
01_test_16.txt AC 136 ms 9512 KiB
01_test_17.txt AC 142 ms 11876 KiB
01_test_18.txt AC 142 ms 14248 KiB
01_test_19.txt AC 144 ms 18204 KiB
01_test_20.txt AC 33 ms 3812 KiB
01_test_21.txt AC 43 ms 3752 KiB
01_test_22.txt AC 43 ms 3692 KiB
01_test_23.txt AC 85 ms 4004 KiB
01_test_24.txt AC 101 ms 4124 KiB
01_test_25.txt AC 112 ms 4732 KiB
01_test_26.txt AC 133 ms 5548 KiB
01_test_27.txt AC 153 ms 8108 KiB
01_test_28.txt AC 44 ms 4232 KiB
01_test_29.txt AC 51 ms 6328 KiB
01_test_30.txt AC 58 ms 4648 KiB
01_test_31.txt AC 76 ms 4816 KiB
01_test_32.txt AC 86 ms 5284 KiB
01_test_33.txt AC 98 ms 5588 KiB
01_test_34.txt AC 108 ms 7192 KiB
01_test_35.txt AC 122 ms 10536 KiB
01_test_36.txt AC 36 ms 3776 KiB