Submission #67781143


Source Code Expand

Copy
#include <stdio.h>
#include <stdlib.h>
#define MOD_BY 15010529
#define MULT 8477633
int hash(int r, int c) {
int res = (int)(((long long)r * MULT + c) % MOD_BY);
if (res < 0) res += MOD_BY;
return res;
}
struct data_s {
int r, c;
int visited;
struct data_s* next;
};
struct data_s* table[MOD_BY];
int* get_visited(int r, int c, int create) {
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>
#include <stdlib.h>

#define MOD_BY 15010529
#define MULT 8477633

int hash(int r, int c) {
	int res = (int)(((long long)r * MULT + c) % MOD_BY);
	if (res < 0) res += MOD_BY;
	return res;
}

struct data_s {
	int r, c;
	int visited;
	struct data_s* next;
};

struct data_s* table[MOD_BY];

int* get_visited(int r, int c, int create) {
	int h = hash(r, c);
	struct data_s** p = &table[h];
	while (*p != NULL) {
		if ((*p)->r == r && (*p)->c == c) {
			return &(*p)->visited;
		}
		p = &(*p)->next;
	}
	if (create) {
		*p = malloc(sizeof(**p));
		if (*p == NULL) exit(2);
		(*p)->r = r;
		(*p)->c = c;
		(*p)->visited = 0;
		(*p)->next = NULL;
		return &(*p)->visited;
	} else {
		return NULL;
	}
}

int H, W, K;
int r[212345], c[212345];

struct queue_s {
	int r, c;
} q[212345 * 10];

int main(void) {
	int i, j;
	int qs = 0, qe = 0;
	if (scanf("%d%d%d", &H, &W, &K) != 3) return 1;
	for (i = 0; i < K; i++) {
		if (scanf("%d%d", &r[i], &c[i]) != 2) return 1;
		get_visited(r[i], c[i], 1);
	}
	for (i = 1; i <= W; i++) {
		if (i != 1) get_visited(0, i, 1);
		if (i != W) get_visited(H + 1, i, 1);
	}
	for (i = 1; i <= H; i++) {
		if (i != 1) get_visited(i, 0, 1);
		if (i != H) get_visited(i, W + 1, 1);
	}
	*get_visited(0, W + 1, 1) = 1;
	get_visited(H + 1, 0, 1);

	q[qe++] = (struct queue_s){ 0, W + 1 };
	while (qs < qe) {
		struct queue_s cur = q[qs++];
		for (i = -1; i <= 1; i++) {
			for (j = -1; j <= 1; j++) {
				int nr = cur.r + i, nc = cur.c + j;
				int *v = get_visited(nr, nc, 0);
				if (v != NULL && !*v) {
					*v = 1;
					q[qe++] = (struct queue_s){ nr, nc };
				}
			}
		}
	}

	puts(*get_visited(H + 1, 0, 1) ? "No" : "Yes");
	return 0;
}

/*

壁の上を8方向に移動して、右上→左下に行ける→No, 行けない→Yes
入力の障害物に加え、外周((1,1)と(H,W)の4方向周囲は除く)が使える

*/

Submission Info

Submission Time
Task G - Big Banned Grid
User mikecat
Language C (gcc 12.2.0)
Score 575
Code Size 1961 Byte
Status AC
Exec Time 205 ms
Memory 155300 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 575 / 575
Status
AC × 4
AC × 45
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 01_random_16.txt, 01_random_17.txt, 01_random_18.txt, 01_random_19.txt, 01_random_20.txt, 01_random_21.txt, 01_random_22.txt, 01_random_23.txt, 01_random_24.txt, 01_random_25.txt, 01_random_26.txt, 01_random_27.txt, 01_random_28.txt, 01_random_29.txt, 01_random_30.txt, 01_random_31.txt, 01_random_32.txt, 01_random_33.txt, 01_random_34.txt, 01_random_35.txt, 01_random_36.txt, 01_random_37.txt, 01_random_38.txt, 01_random_39.txt, 01_random_40.txt, 01_random_41.txt, 01_random_42.txt, 01_random_43.txt, 01_random_44.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 0 ms 1600 KiB
00_sample_01.txt AC 1 ms 1608 KiB
00_sample_02.txt AC 0 ms 1568 KiB
00_sample_03.txt AC 0 ms 1608 KiB
01_random_04.txt AC 205 ms 154800 KiB
01_random_05.txt AC 203 ms 154756 KiB
01_random_06.txt AC 205 ms 154820 KiB
01_random_07.txt AC 201 ms 154736 KiB
01_random_08.txt AC 202 ms 154820 KiB
01_random_09.txt AC 200 ms 154764 KiB
01_random_10.txt AC 119 ms 131532 KiB
01_random_11.txt AC 82 ms 122180 KiB
01_random_12.txt AC 143 ms 138704 KiB
01_random_13.txt AC 114 ms 129804 KiB
01_random_14.txt AC 141 ms 140172 KiB
01_random_15.txt AC 135 ms 132508 KiB
01_random_16.txt AC 10 ms 4888 KiB
01_random_17.txt AC 117 ms 130224 KiB
01_random_18.txt AC 27 ms 9584 KiB
01_random_19.txt AC 23 ms 9872 KiB
01_random_20.txt AC 7 ms 7428 KiB
01_random_21.txt AC 9 ms 9100 KiB
01_random_22.txt AC 202 ms 155096 KiB
01_random_23.txt AC 203 ms 155220 KiB
01_random_24.txt AC 201 ms 155152 KiB
01_random_25.txt AC 200 ms 155160 KiB
01_random_26.txt AC 200 ms 155300 KiB
01_random_27.txt AC 200 ms 155264 KiB
01_random_28.txt AC 112 ms 135644 KiB
01_random_29.txt AC 144 ms 141112 KiB
01_random_30.txt AC 112 ms 129252 KiB
01_random_31.txt AC 127 ms 137584 KiB
01_random_32.txt AC 118 ms 134864 KiB
01_random_33.txt AC 132 ms 132952 KiB
01_random_34.txt AC 31 ms 42948 KiB
01_random_35.txt AC 18 ms 9236 KiB
01_random_36.txt AC 13 ms 6292 KiB
01_random_37.txt AC 90 ms 101784 KiB
01_random_38.txt AC 126 ms 130440 KiB
01_random_39.txt AC 1 ms 2900 KiB
01_random_40.txt AC 16 ms 18692 KiB
01_random_41.txt AC 20 ms 20288 KiB
01_random_42.txt AC 88 ms 135412 KiB
01_random_43.txt AC 133 ms 140016 KiB
01_random_44.txt AC 129 ms 136452 KiB


2025-07-20 (Sun)
18:12:07 +09:00