結果
| 問題 |
No.226 0-1パズル
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2021-12-21 14:27:28 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,480 bytes |
| コンパイル時間 | 197 ms |
| コンパイル使用メモリ | 31,484 KB |
| 実行使用メモリ | 5,376 KB |
| 最終ジャッジ日時 | 2024-09-15 15:35:02 |
| 合計ジャッジ時間 | 951 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 11 WA * 11 |
ソースコード
#include <stdio.h>
#define HWMAX 100
#define MOD 1000000007
int main(void)
{
int i, j, h, w, res1 = 1, res2 = 1, canstartzero = 1, canstartone = 1, canzero[HWMAX], canone[HWMAX];
char str[HWMAX][HWMAX+1];
scanf("%d %d%*c", &h, &w);
for (i = 0; i < h; i++) scanf("%s%*c", str[i]);
for (i = 0; i < w; i++) canzero[i] = canone[i] = 1;
for (i = 0; i < w; i++) {
int hwtype = 0;
for (j = 0; j < h; j++) {
if (str[i][j] == '0') {
if (j & 1) canzero[i] = 0;
else canone[i] = 0;
} else if (str[i][j] == '1') {
if (j & 1) canone[i] = 0;
else canzero[i] = 0;
}
}
if (canzero[i]) hwtype++;
if (canone[i]) hwtype++;
res1 = res1 * hwtype % MOD;
}
for (i = 0; i < w; i++ ){
if (i & 1) {
if (!canzero[i]) canstartone = 0;
if (!canone[i]) canstartzero = 0;
} else {
if (!canzero[i]) canstartzero = 0;
if (!canone[i]) canstartone = 0;
}
}
if (canstartzero) res1--;
if (canstartone) res1--;
for (i = 0; i < h; i++) canzero[i] = canone[i] = 1;
for (i = 0; i < h; i++) {
int hwtype = 0;
for (j = 0; j < w; j++) {
if (str[i][j] == '0') {
if (j & 1) canzero[i] = 0;
else canone[i] = 0;
} else if (str[i][j] == '1') {
if (j & 1) canone[i] = 0;
else canzero[i] = 0;
}
}
if (canzero[i]) hwtype++;
if (canone[i]) hwtype++;
res2 = res2 * hwtype % MOD;
}
printf("%d\n", (res1 + res2) % MOD);
}