Pagini recente » Cod sursa (job #260582) | Cod sursa (job #1939837) | Cod sursa (job #2988613) | Cod sursa (job #1581326) | Cod sursa (job #3347750)
import java.io.*;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public long solve(int n, int[] d) {
int i, j, k, len;
long [][] dp = new long[n + 1][n + 1];
for (i = 1; i <= n; i++) {
dp[i][i] = 0;
}
for (len = 2; len <= n; len++) {
for (i = 1; i + len - 1 <= n; i++) {
j = i + len - 1;
dp[i][j] = Long.MAX_VALUE;
for (k = i; k < j; k++) {
long sol = dp[i][k] + dp[k + 1][j] + (long) d[i - 1] * d[k] * d[j];
dp[i][j] = Math.min(dp[i][j], sol);
}
}
}
return dp[1][n];
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("podm.in"));
// Citim N de pe prima linie
int n = Integer.parseInt(br.readLine().trim());
int[] d = new int[n + 1];
// Citim linia a doua cu dimensiunile și o spargem în "token-uri" (bucăți)
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i <= n; i++) {
d[i] = Integer.parseInt(st.nextToken());
}
br.close();
PrintWriter pw = new PrintWriter(new File("podm.out"));
pw.println(new Main().solve(n, d));
pw.close();
}
}