Submission #703265

#TimeUsernameProblemLanguageResultExecution timeMemory
703265rainboyAwesome Arrowland Adventure (eJOI19_adventure)C11
100 / 100
18 ms3596 KiB
#include <stdio.h>

#define N	500
#define M	500

int di[] = { 0, -1, 0, 1 };
int dj[] = { -1, 0, 1, 0 };
char map[] = "WNES";

int main() {
	static char cc[N][M + 1];
	static int dd[N * M], qu[4][N * M], hh[4], cnt[4];
	int n, m, nm, f, f_, g, i, j, ij, ij_, d;

	scanf("%d%d", &n, &m), nm = n * m;
	for (i = 0; i < n; i++)
		scanf("%s", cc[i]);
	for (ij = 0; ij < nm; ij++)
		dd[ij] = nm * 5;
	dd[0 * m + 0] = 0, qu[0][cnt[0]++] = 0 * m + 0;
	while (1) {
		ij_ = -1, f_ = -1;
		for (f = 0; f < 4; f++)
			if (hh[f] < cnt[f]) {
				ij = qu[f][hh[f]];
				if (ij_ == -1 || dd[ij_] > dd[ij])
					ij_ = ij, f_ = f;
			}
		if (ij_ == -1) {
			printf("-1\n");
			return 0;
		}
		hh[f_]++;
		ij = ij_;
		i = ij / m, j = ij % m, d = dd[ij];
		if (i == n - 1 && j == m - 1) {
			printf("%d\n", d);
			return 0;
		}
		for (g = 0; g < 4; g++)
			if (map[g] == cc[i][j])
				break;
		if (g == 4)
			continue;
		for (f = 0; f < 4; f++) {
			int i_ = i + di[(g + f) % 4], j_ = j + dj[(g + f) % 4], ij_ = i_ * m + j_;

			if (i_ >= 0 && i_ < n && j_ >= 0 && j_ < m && dd[ij_] > d + f)
				dd[ij_] = d + f, qu[f][cnt[f]++] = ij_;
		}
	}
	return 0;
}

Compilation message (stderr)

adventure.c: In function 'main':
adventure.c:15:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |  scanf("%d%d", &n, &m), nm = n * m;
      |  ^~~~~~~~~~~~~~~~~~~~~
adventure.c:17:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |   scanf("%s", cc[i]);
      |   ^~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...