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 |
|
|
| 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 |