結果
| 問題 |
No.1056 2D Lamps
|
| コンテスト | |
| ユーザー |
kriii
|
| 提出日時 | 2020-05-15 22:49:53 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 635 ms / 3,000 ms |
| コード長 | 1,177 bytes |
| コンパイル時間 | 5,097 ms |
| コンパイル使用メモリ | 65,712 KB |
| 最終ジャッジ日時 | 2025-01-10 12:00:33 |
|
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 14 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:12:15: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
12 | scanf ("%d %d", &N, &M);
| ~~~~~~^~~~~~~~~~~~~~~~~
main.cpp:13:71: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
13 | for (int k = 0; k < M; k++) for (int i = 0; i < N; i++) scanf ("%s", B[k][i]);
| ~~~~~~^~~~~~~~~~~~~~~
ソースコード
#include <stdio.h>
#include <bitset>
#include <vector>
using namespace std;
bitset<1408> wow[40040], mask;
bitset<40000> ev[202];
int N, M; char B[202][202][202];
int main()
{
scanf ("%d %d", &N, &M);
for (int k = 0; k < M; k++) for (int i = 0; i < N; i++) scanf ("%s", B[k][i]);
int C = 0, L = N + N + (N - 1) * 2 + 1 + (N - 1) * 2 + 1;
for (int i = 0; i < N; i++){
for (int j = 0; j < N; j++){
wow[C][i] = wow[C][N + j] = wow[C][N + N + i + j] = wow[C][N + N + (N - 1) * 2 + 1 + (N - 1) - i + j] = 1;
for (int k = 0; k < M; k++) if (B[k][i][j] == '#') wow[C][L + k] = 1;
C++;
}
}
for (int i = 0, j = 0; i < C && j < L; j++){
for (int k = i; k < C; k++) if (wow[k][j]){
swap(wow[i], wow[k]);
break;
}
if (!wow[i][j]) continue;
for (int k = 0; k < C; k++) if (k != i && wow[k][j]) wow[k] ^= wow[i];
i++;
}
for (int i = 0; i < L; i++) mask[i] = 1;
for (int i = 0, c = 0; i < C; i++) if ((wow[i] & mask).count() == 0){
for (int k = 0; k < M; k++) ev[k][c] = wow[i][L + k];
c++;
}
for (int i = 0; i < M-1; i++, puts("")) for (int j = i + 1; j < M; j++){
int g = (ev[i] ^ ev[j]).count() == 0;
printf ("%d", g);
}
return 0;
}
kriii