結果
問題 | No.2256 Step by Step |
ユーザー |
|
提出日時 | 2025-05-27 17:22:59 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,390 bytes |
コンパイル時間 | 487 ms |
コンパイル使用メモリ | 30,708 KB |
実行使用メモリ | 7,844 KB |
最終ジャッジ日時 | 2025-05-27 17:23:02 |
合計ジャッジ時間 | 2,599 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
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 | "1\n0\n0\n0\n1\n1", | ^~~~~~~~~~~~~~~~~~ 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", "1\n0\n0\n0\n1\n1", "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; }