Cod sursa(job #2506418)

Utilizator IordachescuAncaFMI Iordachescu Anca Mihaela IordachescuAnca Data 8 decembrie 2019 02:38:05
Problema Parantezare optima de matrici Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("podm.in");	
ofstream fout("podm.out");
	
long long INF = (1LL << 60);
	
int main(){	
    int n;
    fin >> n;

    vector<long long> arr;
    for(int i = 0; i <= n; i++){
    	int value;
    	fin >> value;
    	arr.push_back(value);
    }
	
    vector<vector<long long>>dp(n+5, vector<long long>(n+5, 0));
	
    for (int i = 1; i < n; i++) {
        for (int j = 1; j+i <= n; j++) {
            dp[j][j + i] = INF;
            for (int k = j; k < j + i; ++k) {
                if(dp[j][j+i] > dp[j][k] + dp[k + 1][j + i] + arr[j - 1] * arr[k] * arr[j + i]){
                	dp[i][i+i] = dp[j][k] + dp[k + 1][j + i] + arr[j - 1] * arr[k] * arr[j + i];
               	}
            }
        }
    }
	
    fout << dp[1][n];
    fin.close();
    fout.close();
    return 0;
	
}