結果
| 問題 |
No.2256 Step by Step
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-05-27 17:21:57 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,396 bytes |
| コンパイル時間 | 339 ms |
| コンパイル使用メモリ | 29,824 KB |
| 実行使用メモリ | 7,844 KB |
| 最終ジャッジ日時 | 2025-05-27 17:22:00 |
| 合計ジャッジ時間 | 2,300 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 31 WA * 1 |
コンパイルメッセージ
main.cpp:6:3: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
6 | "1\n0\n0\n0\n1\n1",
| ^~~~~~~~~~~~~~~~~~
main.cpp:7:3: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
7 | "10\n01\n00\n01\n10\n11",
| ^~~~~~~~~~~~~~~~~~~~~~~~
main.cpp:8:3: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
8 | "024\n135\n135\n445\n232\n100",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.cpp:9:3: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
9 | "0223\n1554\n1005\n2334\n1664\n6777"
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
main.cpp: In function ‘int main()’:
main.cpp:48:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
48 | scanf("%d", &n);
| ~~~~~^~~~~~~~~~
ソースコード
#include <cstdio>
constexpr int MAX_N = 1000 + 2;
constexpr int MAX_ID = 10;
constexpr char *ans[4] = {
"1\n0\n0\n0\n1\n1",
"10\n01\n00\n01\n10\n11",
"024\n135\n135\n445\n232\n100",
"0223\n1554\n1005\n2334\n1664\n6777"
};
int t = 0;
char s[6][MAX_N];
void placeVertical(int x, int y, int _t=-1) {
int id = _t < 0 ? t : _t;
for (int i = 0; i < x - 2; i++) {
s[i][y] = s[i + 3][y];
}
for (int i = x; i > x - 3; i--) {
s[i][y] = '0' + id;
}
t = (t + 1) % MAX_ID;
}
void placeHorizonal(int x, int y, int _t=-1) {
int id = _t < 0 ? t : _t;
for (int i = 0; i < x; i++) {
for (int j = y; j < y + 3; j++) {
s[i][j] = s[i + 1][j];
}
}
for (int j = y; j < y + 3; j++) {
s[x][j] = '0' + id;
}
t = (t + 1) % MAX_ID;
}
int main() {
int n;
scanf("%d", &n);
if (n <= 4) {
return puts(ans[n - 1]), 0;
}
placeHorizonal(5, 0);
placeVertical(5, 0);
placeHorizonal(4, 0);
placeVertical(4, 1);
placeHorizonal(3, 0);
int y = 2;
n -= 2;
while (n != 1 && n != 3 && n != 4 && n != 6) {
placeHorizonal(5, y);
placeVertical(5, y + 1);
placeHorizonal(4, y);
placeHorizonal(5, y + 2);
placeHorizonal(5, y);
placeHorizonal(5, y + 2);
placeVertical(5, y + 3);
placeHorizonal(4, y + 2);
y += 4;
n -= 4;
}
if (n == 1) {
placeVertical(5, y);
}
if (n == 3) {
placeHorizonal(5, y);
placeVertical(5, y + 1);
placeHorizonal(4, y);
placeVertical(4, y + 2);
placeHorizonal(3, y);
}
if (n == 4) {
for (int i = 0; i < 3; i++) {
placeHorizonal(5, y);
placeHorizonal(5, y + 1);
}
placeVertical(5, y + 3);
}
if (n == 6) {
placeHorizonal(5, y);
placeHorizonal(5, y + 1);
placeHorizonal(5, y + 3, (t + 5) % MAX_ID);
placeVertical(5, y + 5, (t + 5) % MAX_ID);
placeHorizonal(4, y + 3);
placeVertical(4, y + 4);
placeHorizonal(3, y + 3);
placeHorizonal(5, y + 1, (t + 6) % MAX_ID);
placeHorizonal(5, y, (t + 6) % MAX_ID);
placeHorizonal(5, y + 1);
placeHorizonal(5, y);
}
for (int i = 0; i < 6; i++) {
printf("%s\n", s[i]);
}
return 0;
}