Submission #72925519


Source Code Expand

Copy
#include <stdio.h>
int N, D;
int price[400][3123];
int price_rui[400][3123];
int memo[400];
int calc(int day) {
int ans = -1;
int i, j;
if (day >= D) return 0;
if (memo[day]) return ~memo[day];
for (i = 0; i < N; i++) {
int candidate;
candidate = calc(day + 1) + price[day][i];
if (ans < 0 || candidate < ans) ans = candidate;
if (day + 1 < D) {
candidate = calc(day + 2) + price[day][i] + price[day + 1][i] * 9 / 10;
if (ans < 0 || candidate < ans) ans = candidate;
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>

int N, D;
int price[400][3123];

int price_rui[400][3123];

int memo[400];

int calc(int day) {
	int ans = -1;
	int i, j;
	if (day >= D) return 0;
	if (memo[day]) return ~memo[day];
	for (i = 0; i < N; i++) {
		int candidate;
		candidate = calc(day + 1) + price[day][i];
		if (ans < 0 || candidate < ans) ans = candidate;
		if (day + 1 < D) {
			candidate = calc(day + 2) + price[day][i] + price[day + 1][i] * 9 / 10;
			if (ans < 0 || candidate < ans) ans = candidate;
		}
		for (j = day + 2; j < D; j++) {
			candidate = calc(j + 1);
			candidate += price[day][i];
			candidate += price[day + 1][i] * 9 / 10;
			candidate += (price_rui[j][i] - price_rui[day + 1][i]) * 7 / 10;
			if (ans < 0 || candidate < ans) ans = candidate;
		}
	}
	return ~(memo[day] = ~ans);
}

int main(void) {
	int i, j;
	if (scanf("%d%d", &N, &D) != 2) return 1;
	for (i = 0; i < D; i++) {
		for (j = 0; j < N; j++) {
			if (scanf("%d", &price[i][j]) != 1) return 1;
			price_rui[i][j] = (i == 0 ? 0 : price_rui[i - 1][j]) + price[i][j];
		}
	}
	printf("%d\n", calc(0));
	return 0;
}

Submission Info

Submission Time
Task nile - ナイルドットコム (Nile.Com)
User mikecat
Language C23 (GCC 14.2.0)
Score 100
Code Size 1127 Byte
Status AC
Exec Time 680 ms
Memory 10636 KiB

Judge Result

Set Name Set01 Set02 Set03 Set04 Set05 Set06 Set07 Set08 Set09 Set10
Score / Max Score 10 / 10 10 / 10 10 / 10 10 / 10 10 / 10 10 / 10 10 / 10 10 / 10 10 / 10 10 / 10
Status
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
AC × 1
Set Name Test Cases
Set01 01
Set02 02
Set03 03
Set04 04
Set05 05
Set06 06
Set07 07
Set08 08
Set09 09
Set10 10
Case Name Status Exec Time Memory
01 AC 0 ms 1632 KiB
02 AC 0 ms 1632 KiB
03 AC 1 ms 2612 KiB
04 AC 28 ms 5260 KiB
05 AC 26 ms 4108 KiB
06 AC 39 ms 4148 KiB
07 AC 680 ms 10636 KiB
08 AC 648 ms 10560 KiB
09 AC 636 ms 10468 KiB
10 AC 657 ms 10540 KiB


2026-02-01 (Sun)
14:43:29 +09:00