結果
| 問題 |
No.3378 Go Board
|
| コンテスト | |
| ユーザー |
👑 |
| 提出日時 | 2025-11-19 00:42:45 |
| 言語 | C++23 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 33 ms / 2,000 ms |
| コード長 | 1,887 bytes |
| コンパイル時間 | 2,847 ms |
| コンパイル使用メモリ | 284,896 KB |
| 実行使用メモリ | 7,852 KB |
| 最終ジャッジ日時 | 2025-11-21 20:52:33 |
| 合計ジャッジ時間 | 8,859 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 22 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
void yes(const vector<vector<char>> grid) {
int length = grid.size();
cout << "Yes" << "\n";
for (int i = 0; i < length; i++) {
for (int j = 0; j < length; j++) {
cout << grid[i][j];
}
cout << "\n";
}
}
void no() {
cout << "No" << "\n";
}
void solve() {
int N, K;
cin >> N >> K;
if (N == 2) {
if (K == 2) {
vector<vector<char>> grid{
{'#', '#'},
{'.', '.'}
};
yes(grid);
} else {
no();
}
return;
}
if (K <= 2 || (N * N) / 2 < K) {
no();
return;
}
vector grid(N, vector<char>(N, '.'));
if (K <= N) {
for (int j = 0; j < K - 1; j++) {
grid[0][j] = '#';
}
grid[1][0] = '#';
yes(grid);
return;
}
int div = (2 * K) / N;
int mod = (2 * K) % N;
for (int j = 0; j < N; j++) {
if (mod > 0 && j < mod) {
grid[div - 1][j] = '#';
} else {
grid[div - 2][j] = '#';
}
}
for (int i = 0; i < div - 1; i++) {
for (int j = 1; j < N - 1; j += 3) {
grid[i][j] = '#';
}
grid[i][N - 2] = '#';
}
if (mod > 0) {
grid[div - 2][mod - 1] = '#';
}
int remain = K;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
remain -= grid[i][j] == '#' ? 1 : 0;
}
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
if (remain > 0 && grid[i][j] == '.') {
grid[i][j] = '#';
remain -= 1;
}
}
}
yes(grid);
}
int main() {
cin.tie(nullptr);
ios::sync_with_stdio(false);
int T;
cin >> T;
while (T--) solve();
}