Submission #68991886


Source Code Expand

Copy
#include <stdio.h>
#include <string.h>
int H, W;
char A[512][512];
int mincost[512][512][2];
struct status_s {
int y, x, toggled;
} q[512 * 512 * 2];
int main(void) {
int i, j;
int sy = -1, sx = -1, gy = -1, gx = -1;
int qs = 0, qe = 0;
int ans, candidate;
if (scanf("%d%d", &H, &W) != 2) return 1;
for (i = 0; i < H; i++) {
if (scanf("%511s", A[i]) != 1) return 1;
for (j = 0; j < W; j++) {
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>
#include <string.h>

int H, W;
char A[512][512];

int mincost[512][512][2];

struct status_s {
	int y, x, toggled;
} q[512 * 512 * 2];

int main(void) {
	int i, j;
	int sy = -1, sx = -1, gy = -1, gx = -1;
	int qs = 0, qe = 0;
	int ans, candidate;
	if (scanf("%d%d", &H, &W) != 2) return 1;
	for (i = 0; i < H; i++) {
		if (scanf("%511s", A[i]) != 1) return 1;
		for (j = 0; j < W; j++) {
			if (A[i][j] == 'S') { sy = i; sx = j; }
			if (A[i][j] == 'G') { gy = i; gx = j; }
		}
	}
	if (sy < 0 || gy < 0) {
		puts("ERROR");
		return 42;
	}
	memset(mincost, 0x7f, sizeof(mincost));
	mincost[sy][sx][0] = 0;
	q[qe++] = (struct status_s){ sy, sx, 0 };
	while (qs < qe) {
		struct status_s cur = q[qs++];
		for (i = 0; i < 4; i++) {
			int d = (i & 1) * 2 - 1;
			int dy = i & 2 ? d : 0, dx = i & 2 ? 0 : d;
			int ny = cur.y + dy, nx = cur.x + dx;
			if (
				0 <= ny && ny < H && 0 <= nx && nx < W &&
				A[ny][nx] != '#' && A[ny][nx] != "xo"[cur.toggled]
			) {
				int nt = cur.toggled ^ (A[ny][nx] == '?');
				int nc = mincost[cur.y][cur.x][cur.toggled] + 1;
				if (mincost[ny][nx][nt] > nc) {
					mincost[ny][nx][nt] = nc;
					q[qe++] = (struct status_s){ ny, nx, nt };
				}
			}
		}
	}
	ans = mincost[gy][gx][0];
	candidate = mincost[gy][gx][1];
	if (candidate < ans) ans = candidate;
	printf("%d\n", ans < H * W * 2 ? ans : -1);
	return 0;
}

Submission Info

Submission Time
Task D - Toggle Maze
User mikecat
Language C (gcc 12.2.0)
Score 400
Code Size 1426 Byte
Status AC
Exec Time 16 ms
Memory 9892 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 67
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 01_handmade_04.txt, 01_handmade_05.txt, 01_handmade_06.txt, 01_handmade_07.txt, 01_handmade_08.txt, 01_handmade_09.txt, 01_handmade_10.txt, 01_handmade_11.txt, 01_handmade_12.txt, 01_handmade_13.txt, 01_handmade_14.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 02_random_10.txt, 02_random_11.txt, 02_random_12.txt, 02_random_13.txt, 02_random_14.txt, 02_random_15.txt, 02_random_16.txt, 02_random_17.txt, 02_random_18.txt, 02_random_19.txt, 02_random_20.txt, 02_random_21.txt, 02_random_22.txt, 02_random_23.txt, 02_random_24.txt, 02_random_25.txt, 02_random_26.txt, 02_random_27.txt, 02_random_28.txt, 02_random_29.txt, 02_random_30.txt, 02_random_31.txt, 02_random_32.txt, 02_random_33.txt, 02_random_34.txt, 02_random_35.txt, 02_random_36.txt, 02_random_37.txt, 02_random_38.txt, 02_random_39.txt, 02_random_40.txt, 02_random_41.txt, 02_random_42.txt, 02_random_43.txt, 02_random_44.txt, 02_random_45.txt, 02_random_46.txt, 02_random_47.txt, 02_random_48.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3632 KiB
00_sample_01.txt AC 1 ms 3676 KiB
00_sample_02.txt AC 1 ms 3776 KiB
01_handmade_00.txt AC 9 ms 8400 KiB
01_handmade_01.txt AC 9 ms 8376 KiB
01_handmade_02.txt AC 8 ms 8404 KiB
01_handmade_03.txt AC 8 ms 8272 KiB
01_handmade_04.txt AC 1 ms 3732 KiB
01_handmade_05.txt AC 1 ms 3796 KiB
01_handmade_06.txt AC 1 ms 3764 KiB
01_handmade_07.txt AC 1 ms 3776 KiB
01_handmade_08.txt AC 1 ms 3768 KiB
01_handmade_09.txt AC 5 ms 6360 KiB
01_handmade_10.txt AC 5 ms 6196 KiB
01_handmade_11.txt AC 12 ms 9892 KiB
01_handmade_12.txt AC 13 ms 9880 KiB
01_handmade_13.txt AC 8 ms 6836 KiB
01_handmade_14.txt AC 8 ms 6836 KiB
02_random_00.txt AC 1 ms 3612 KiB
02_random_01.txt AC 9 ms 6200 KiB
02_random_02.txt AC 2 ms 3764 KiB
02_random_03.txt AC 10 ms 6564 KiB
02_random_04.txt AC 1 ms 3692 KiB
02_random_05.txt AC 11 ms 6936 KiB
02_random_06.txt AC 10 ms 6408 KiB
02_random_07.txt AC 11 ms 6916 KiB
02_random_08.txt AC 1 ms 3948 KiB
02_random_09.txt AC 12 ms 7052 KiB
02_random_10.txt AC 2 ms 3900 KiB
02_random_11.txt AC 11 ms 6944 KiB
02_random_12.txt AC 2 ms 3908 KiB
02_random_13.txt AC 3 ms 4544 KiB
02_random_14.txt AC 10 ms 6268 KiB
02_random_15.txt AC 1 ms 3860 KiB
02_random_16.txt AC 12 ms 7120 KiB
02_random_17.txt AC 1 ms 3972 KiB
02_random_18.txt AC 12 ms 7024 KiB
02_random_19.txt AC 2 ms 4056 KiB
02_random_20.txt AC 12 ms 7128 KiB
02_random_21.txt AC 1 ms 3876 KiB
02_random_22.txt AC 12 ms 6976 KiB
02_random_23.txt AC 1 ms 3884 KiB
02_random_24.txt AC 4 ms 4668 KiB
02_random_25.txt AC 1 ms 3828 KiB
02_random_26.txt AC 4 ms 4820 KiB
02_random_27.txt AC 2 ms 4256 KiB
02_random_28.txt AC 7 ms 5624 KiB
02_random_29.txt AC 4 ms 4808 KiB
02_random_30.txt AC 10 ms 6792 KiB
02_random_31.txt AC 2 ms 4112 KiB
02_random_32.txt AC 4 ms 4656 KiB
02_random_33.txt AC 3 ms 4584 KiB
02_random_34.txt AC 7 ms 5860 KiB
02_random_35.txt AC 3 ms 4504 KiB
02_random_36.txt AC 9 ms 6376 KiB
02_random_37.txt AC 7 ms 5512 KiB
02_random_38.txt AC 16 ms 8588 KiB
02_random_39.txt AC 13 ms 7824 KiB
02_random_40.txt AC 16 ms 8436 KiB
02_random_41.txt AC 1 ms 3800 KiB
02_random_42.txt AC 1 ms 3796 KiB
02_random_43.txt AC 1 ms 4048 KiB
02_random_44.txt AC 1 ms 4012 KiB
02_random_45.txt AC 1 ms 3672 KiB
02_random_46.txt AC 1 ms 3700 KiB
02_random_47.txt AC 1 ms 3928 KiB
02_random_48.txt AC 1 ms 3972 KiB


2025-09-02 (Tue)
07:49:49 +09:00