Cod sursa(job #2506419)

Utilizator IordachescuAncaFMI Iordachescu Anca Mihaela IordachescuAnca Data 8 decembrie 2019 02:45:01
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#include <vector>
#include<iostream>
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 l = 1; l < n; l++) {
        for (int i = 1; i+l <= n; i++) {
            dp[i][i + l] = INF;
            for (int k = i; k < i + l; k++) {
                if(dp[i][i+l] > dp[i][k] + dp[k + 1][i + l] + arr[i - 1] * arr[k] * arr[i + l]){
                	dp[i][i+l] = dp[i][k] + dp[k + 1][i + l] + arr[i - 1] * arr[k] * arr[i + l];
                }
            }
        }
    }
	
    fout << dp[1][n];
    //cout << dp[1][n];
    fin.close();
    fout.close();
    return 0;
	
}