結果
問題 |
No.1427 Simplified Tetris
|
ユーザー |
![]() |
提出日時 | 2025-06-22 11:55:11 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,589 bytes |
コンパイル時間 | 792 ms |
コンパイル使用メモリ | 73,104 KB |
実行使用メモリ | 7,848 KB |
最終ジャッジ日時 | 2025-06-22 11:55:20 |
合計ジャッジ時間 | 8,093 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 4 |
other | WA * 37 |
ソースコード
#include <iostream> #include <vector> #include <string> using namespace std; int main() { int H, W, N; cin >> H >> W >> N; vector<string> grid(H); for (int i = 0; i < H; ++i) { string line; cin >> line; grid[i] = line; } vector<int> positions(N); for (int i = 0; i < N; ++i) { cin >> positions[i]; } vector<string> blocks(N, "........."); // 3x3 blocks initialized to all '.' for (int i = N - 1; i >= 0; --i) { int c = positions[i]; bool found = false; // Try to find the highest possible position where the block could have landed for (int r = 0; r < H - 2; ++r) { // Check if the 3x3 block starting at (r, c) can be a valid block bool can_remove = true; for (int dr = 0; dr < 3; ++dr) { for (int dc = 0; dc < 3; ++dc) { if (grid[r + dr][c + dc] == '.' && blocks[i][dr * 3 + dc] == '#') { can_remove = false; break; } } if (!can_remove) break; } if (can_remove) { // Check if the block has at least one '#' bool has_block = false; for (int dr = 0; dr < 3; ++dr) { for (int dc = 0; dc < 3; ++dc) { if (grid[r + dr][c + dc] == '#') { has_block = true; break; } } if (has_block) break; } if (!has_block) continue; // Now, try to determine the block's shape string block(9, '.'); for (int dr = 0; dr < 3; ++dr) { for (int dc = 0; dc < 3; ++dc) { if (grid[r + dr][c + dc] == '#') { block[dr * 3 + dc] = '#'; grid[r + dr][c + dc] = '.'; } } } blocks[i] = block; found = true; break; } } if (!found) { // Handle cases where no block is found (shouldn't happen per problem statement) blocks[i] = "###......"; // Placeholder, though problem says input is valid } } for (const string &block : blocks) { for (int i = 0; i < 3; ++i) { cout << block.substr(i * 3, 3) << endl; } } return 0; }