Submission #70997535


Source Code Expand

Copy
#include <stdio.h>
#include <inttypes.h>
int N;
int64_t a[512];
int64_t sum[512];
int64_t memo[512][512];
/* [s, e] */
int64_t calc(int s, int e) {
int64_t ans = 0, i;
if (s == e) return 0;
if (memo[s][e]) return ~memo[s][e];
for (i = s; i < e; i++) {
int64_t candidate = calc(s, i) + calc(i + 1, e) + (sum[e] - sum[s - 1]);
if (i == s || candidate < ans) ans = candidate;
}
return ~(memo[s][e] = ~ans);
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <stdio.h>
#include <inttypes.h>

int N;
int64_t a[512];

int64_t sum[512];

int64_t memo[512][512];

/* [s, e] */
int64_t calc(int s, int e) {
	int64_t ans = 0, i;
	if (s == e) return 0;
	if (memo[s][e]) return ~memo[s][e];
	for (i = s; i < e; i++) {
		int64_t candidate = calc(s, i) + calc(i + 1, e) + (sum[e] - sum[s - 1]);
		if (i == s || candidate < ans) ans = candidate;
	}
	return ~(memo[s][e] = ~ans);
}

int main(void) {
	int i;
	if (scanf("%d", &N) != 1) return 1;
	for (i = 1; i <= N; i++) {
		if (scanf("%" SCNd64, &a[i]) != 1) return 1;
		sum[i] = sum[i - 1] + a[i];
	}
	printf("%" PRId64 "\n", calc(1, N));
	return 0;
}

Submission Info

Submission Time
Task N - Slimes
User mikecat
Language C (gcc 12.2.0)
Score 100
Code Size 674 Byte
Status AC
Exec Time 69 ms
Memory 3376 KiB

Judge Result

Set Name All
Score / Max Score 100 / 100
Status
AC × 16
Set Name Test Cases
All 0_00, 0_01, 0_02, 0_03, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09, 1_10, 1_11
Case Name Status Exec Time Memory
0_00 AC 1 ms 1756 KiB
0_01 AC 1 ms 1640 KiB
0_02 AC 0 ms 1624 KiB
0_03 AC 0 ms 1596 KiB
1_00 AC 0 ms 1616 KiB
1_01 AC 69 ms 3376 KiB
1_02 AC 69 ms 3264 KiB
1_03 AC 67 ms 3344 KiB
1_04 AC 68 ms 3356 KiB
1_05 AC 65 ms 3340 KiB
1_06 AC 68 ms 3344 KiB
1_07 AC 65 ms 3228 KiB
1_08 AC 66 ms 3240 KiB
1_09 AC 66 ms 3356 KiB
1_10 AC 63 ms 3192 KiB
1_11 AC 63 ms 3332 KiB


2025-11-16 (Sun)
08:44:13 +09:00