結果
| 問題 |
No.226 0-1パズル
|
| コンテスト | |
| ユーザー |
kriii
|
| 提出日時 | 2019-08-24 17:12:43 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 991 bytes |
| コンパイル時間 | 222 ms |
| コンパイル使用メモリ | 33,408 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-10-14 12:54:48 |
| 合計ジャッジ時間 | 947 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 WA * 2 |
ソースコード
#include <stdio.h>
int main()
{
int n, m, c = 0, d = 0; char b[111][111];
scanf ("%d %d", &n, &m);
for (int i = 0; i < n; i++){
scanf ("%s", b[i]);
for (int j = 0; j < m; j++) if (b[i][j] != '?'){
c += (b[i][j] - '0' + i + j) % 2;
d++;
}
}
int u = 0;
for (int i = 0; i < n; i++){
int c[2] = { 0, };
for (int j = 0; j < m; j++) if (b[i][j] != '?'){
c[(b[i][j] - '0' + j) % 2]++;
}
if (c[0] && c[1]) u = -1;
if (!c[0] && !c[1]) u++;
}
int v = 0;
for (int j = 0; j < m; j++){
int c[2] = { 0, };
for (int i = 0; i < n; i++) if (b[i][j] != '?'){
c[(b[i][j] - '0' + i) % 2]++;
}
if (c[0] && c[1]) v = -1;
if (!c[0] && !c[1]) v++;
}
const long long mod = 1000000007;
long long U = 1, V = 1;
if (u < 0) U = 0;
else while (u--) U = U * 2 % mod;
if (v < 0) V = 0;
else while (v--) V = V * 2 % mod;
long long A = (U + V) % mod;
if (c == 0) A = (A + mod - 1) % mod;
if (c == d) A = (A + mod - 1) % mod;
printf ("%lld\n", A);
return 0;
}
kriii