C++の練習を兼ねて, AtCoder Grand Contest 038 の 問題A (A – 01 Matrix) を解いてみた.
■感想.
1. 方針が見えなかったので, 解説を見て, 実装した.
2. 個人的には, 非常に面白い問題と感じた.
本家のサイトAGC038解説をご覧下さい.
■C++版プログラム(問題A/AC版).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// 解き直し. // AGC038解説. // https://img.atcoder.jp/agc038/editorial.pdf #include <bits/stdc++.h> using namespace std; int main(){ // 1. 入力情報取得. int H, W, A, B; scanf("%d %d %d %d", &H, &W, &A, &B); // 2. 解説通り. // 0, 1 の 書き込み. int Matrix[H][W]; for(int i = 0; i < H; i++){ for(int j = 0; j < W; j++){ if(i < B && j < A) Matrix[i][j] = 0; if(i < B && j >= A) Matrix[i][j] = 1; if(i >= B && j < A) Matrix[i][j] = 1; if(i >= B && j >= A) Matrix[i][j] = 0; } } // 3. 出力 ~ 後処理. for(int i = 0; i < H; i++){ for(int j = 0; j < W; j++) printf("%d", Matrix[i][j]); printf("\n"); } return 0; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
[入力例] 3 3 1 1 [出力例] 011 100 100 ※AtCoderテストケースより [入力例] 1 5 2 0 [出力例] 11000 ※AtCoderテストケースより [入力例] 10 10 3 7 [出力例] 0001111111 0001111111 0001111111 0001111111 0001111111 0001111111 0001111111 1110000000 1110000000 1110000000 [入力例] 21 20 19 18 [出力例] 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 00000000000000000001 11111111111111111110 11111111111111111110 11111111111111111110 |
■参照サイト
AtCoder Grand Contest 038