結果
問題 |
No.2946 Puyo
|
ユーザー |
![]() |
提出日時 | 2025-02-17 14:15:19 |
言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 94 ms / 2,000 ms |
コード長 | 2,654 bytes |
コンパイル時間 | 3,096 ms |
コンパイル使用メモリ | 245,416 KB |
実行使用メモリ | 8,320 KB |
最終ジャッジ日時 | 2025-02-17 14:15:30 |
合計ジャッジ時間 | 9,601 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 45 |
ソースコード
#include <cassert> #include <cctype> #include <cfloat> #include <climits> #include <cmath> #include <csetjmp> #include <csignal> #include <cstdarg> #include <cstddef> #include <cstdio> #include <cstdlib> #include <cstring> #include <ctime> #include <cfenv> #include <cinttypes> #include <cstdint> #include <algorithm> #include <bitset> #include <complex> #include <deque> #include <exception> #include <fstream> #include <functional> #include <iomanip> #include <ios> #include <iosfwd> #include <iostream> #include <istream> #include <iterator> #include <limits> #include <list> #include <locale> #include <map> #include <memory> #include <new> #include <numeric> #include <ostream> #include <queue> #include <set> #include <sstream> #include <stack> #include <stdexcept> #include <streambuf> #include <string> #include <typeinfo> #include <utility> #include <valarray> #include <vector> #include <array> #include <chrono> #include <forward_list> #include <initializer_list> #include <random> #include <ratio> #include <regex> #include <system_error> #include <tuple> #include <type_traits> #include <unordered_map> #include <unordered_set> #include <shared_mutex> using namespace std; using ll = long long; //ライブラリを貼るところ //ここまで const vector<int> dx = {1, 0, -1, 0}; const vector<int> dy = {0, 1, 0, -1}; void solve(){ int H, W; cin >> H >> W; vector<string> G(H); for(int i = 0; i < H; ++i) cin >> G[i]; vector<vector<int>> re(H, vector<int>(W, 0)); for(int i = 0; i < H; ++i) for(int j = 0; j < W; ++j){ if(re[i][j] == 1) continue; char c = G[i][j]; queue<pair<int, int>> q; q.push(make_pair(i, j)); re[i][j] = 1; vector<pair<int, int>> v; v.emplace_back(make_pair(i, j)); while(!q.empty()){ auto [x, y] = q.front(); q.pop(); for(int k = 0; k < 4; ++k){ if(x + dx[k] >= 0 && x + dx[k] < H && y + dy[k] >= 0 && y + dy[k] < W){ if(G[x + dx[k]][y + dy[k]] == c && re[x + dx[k]][y + dy[k]] == 0){ re[x + dx[k]][y + dy[k]] = 1; q.push(make_pair(x + dx[k], y + dy[k])); v.emplace_back(make_pair(x + dx[k], y + dy[k])); } } } } if(v.size() >= 4){ for(auto [x, y]: v) G[x][y] = '.'; } } for(int i = 0; i < H; ++i) cout << G[i] << "\n"; } int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); cout << setprecision(16) << fixed; int T = 1; for(int i = 0; i < T; ++i) solve(); }