34 lines
753 B
C
34 lines
753 B
C
#include <stdio.h>
|
|
#include <limits.h>
|
|
|
|
#define MAX INT_MAX
|
|
|
|
int size[501][2];
|
|
int dp[501][501];
|
|
|
|
int min(int a, int b) { return a>b ? b : a; }
|
|
|
|
int main() {
|
|
int N;
|
|
scanf("%d",&N);
|
|
|
|
for(int i=1; i<=N; i++) scanf("%d %d",&size[i][0], &size[i][1]);
|
|
|
|
for(int len=1; len<N; len++) {
|
|
for(int i=1; i<=N-len; i++) {
|
|
int j = i + len;
|
|
dp[i][j] = MAX;
|
|
|
|
for(int k=i; k<j; k++) {
|
|
int left_times = dp[i][k];
|
|
int right_times = dp[k+1][j];
|
|
int operator_count = size[i][0] * size[k][1] * size[j][1];
|
|
dp[i][j] = min(dp[i][j], left_times + right_times + operator_count);
|
|
}
|
|
}
|
|
}
|
|
|
|
printf("%d\n",dp[1][N]);
|
|
|
|
return 0;
|
|
} |