Submission #74191146


Source Code Expand

Copy
#include <stdio.h>
#define MOD_BY 100000
int add(int a, int b) {
return a + b - MOD_BY * (a + b >= MOD_BY);
}
int w, h;
int memo[128][128][5];
const int yoko_next[5] = { 2, 2, 2, 1, 1 };
const int tate_next[5] = { 4, 3, 3, 4, 4 };
/*
status
0 :
1 :
2 : OK
3 :
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>

#define MOD_BY 100000

int add(int a, int b) {
	return a + b - MOD_BY * (a + b >= MOD_BY);
}

int w, h;

int memo[128][128][5];

const int yoko_next[5] = { 2, 2, 2, 1, 1 };
const int tate_next[5] = { 4, 3, 3, 4, 4 };

/*
status
0 : 走っていない
1 : 横に進んだ、旋回禁止
2 : 横に進んだ、旋回OK
3 : 縦に進んだ、旋回禁止
4 : 縦に進んだ、旋回OK
*/
int calc(int x, int y, int status) {
	int ans = 0;
	if (x == w && y == h) return 1;
	if (memo[x][y][status]) return ~memo[x][y][status];
	if (x < w && status != 3) {
		ans = add(ans, calc(x + 1, y, yoko_next[status]));
	}
	if (y < h && status != 1) {
		ans = add(ans, calc(x, y + 1, tate_next[status]));
	}
	return ~(memo[x][y][status] = ~ans);
}

int main(void) {
	if (scanf("%d%d", &w, &h) != 2) return 1;
	printf("%d\n", calc(1, 1, 0));
	return 0;
}

Submission Info

Submission Time
Task E - 通勤経路
User mikecat
Language C23 (GCC 14.2.0)
Score 100
Code Size 900 Byte
Status AC
Exec Time 1 ms
Memory 1984 KiB

Judge Result

Set Name set01 set02 set03 set04 set05
Score / Max Score 20 / 20 20 / 20 20 / 20 20 / 20 20 / 20
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
set01 data1
set02 data2
set03 data3
set04 data4
set05 data5
Case Name Status Exec Time Memory
data1 AC 0 ms 1784 KiB
data2 AC 0 ms 1732 KiB
data3 AC 0 ms 1776 KiB
data4 AC 1 ms 1984 KiB
data5 AC 1 ms 1892 KiB


2026-03-18 (Wed)
00:44:11 +09:00