結果
| 問題 |
No.402 最も海から遠い場所
|
| ユーザー |
FF256grhy
|
| 提出日時 | 2016-07-22 23:54:32 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,156 bytes |
| コンパイル時間 | 226 ms |
| コンパイル使用メモリ | 24,448 KB |
| 実行使用メモリ | 45,472 KB |
| 最終ジャッジ日時 | 2024-11-06 13:30:07 |
| 合計ジャッジ時間 | 2,674 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 18 WA * 1 |
コンパイルメッセージ
main.cpp: In function ‘int main()’:
main.cpp:9:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
9 | scanf("%d%d", &h, &w);
| ~~~~~^~~~~~~~~~~~~~~~
main.cpp:11:22: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
11 | scanf("%s", f[i] + 1);
| ~~~~~^~~~~~~~~~~~~~~~
ソースコード
#include <stdio.h>
int h, w;
char f[3002][3003];
int queue[9000000], get, set;
int main() {
scanf("%d%d", &h, &w);
for(int i = 1; i <= h; i++) {
scanf("%s", f[i] + 1);
f[i][0 ] = '.';
f[i][w + 1] = '.';
}
for(int j = 0; j <= w + 1; j++) {
f[0 ][j] = '.';
f[h + 1][j] = '.';
}
for(int i = 0; i <= h + 1; i++) {
for(int j = 0; j <= w + 1; j++) {
if(f[i][j] == '.') {
for(int k = -1; k <= 1; k++) {
for(int l = -1; l <= 1; l++) {
if(k == 0 && l == 0) { continue; }
if( ! (1 <= i + k && i + k <= h && 1 <= j + l && j + l <= w) ) { continue; }
if(f[i + k][j + l] == '#') {
f[i + k][j + l] = '1';
queue[set++] = (i + k) * 4000 + (j + l);
}
}
}
}
}
}
int max = '1';
while(get != set) {
int q = queue[get++];
int i = q / 4000;
int j = q % 4000;
for(int k = -1; k <= 1; k++) {
for(int l = -1; l <= 1; l++) {
if(k == 0 && l == 0) { continue; }
if(f[i + k][j + l] == '#') {
f[i + k][j + l] = f[i][j] + 1;
if(max < f[i][j] + 1) { max = f[i][j] + 1; }
queue[set++] = (i + k) * 4000 + (j + l);
}
}
}
}
printf("%d\n", max - '0');
return 0;
}
FF256grhy