Cod sursa(job #2016865)

Utilizator MaligMamaliga cu smantana Malig Data 30 august 2017 18:24:29
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <iostream>
#include <fstream>
#include <stack>
#include <vector>
#include <deque>
#include <ctime>
#include <cstdlib>

using namespace std;
const int inf = 1e9 + 5;
const int NMax = 5e2 + 5;
ifstream in("podm.in");
ofstream out("podm.out");

#define ll long long
#define ull unsigned long long
#define pb push_back
using zint = int;

int N,K;
ll v[NMax],dp[NMax][NMax];

int main() {
    in>>N;
    for (int i=1;i <= N+1;++i) {
        in>>v[i];
    }

    for (int d=2;d <= N;++d) {

        for (int i=1;i+d-1 <= N;++i) {
            int st = i, dr = i+d-1;

            dp[st][dr] = inf;
            for (int j=st;j < dr;++j) {
                ll val = dp[st][j] + dp[j+1][dr] + v[st] * v[j+1] * v[dr+1];
                dp[st][dr] = min(dp[st][dr],val);
            }
        }
    }

    out<<dp[1][N]<<'\n';

    /*
    for (int i=1;i <= N;++i) {
        for (int j=1;j <= N;++j) {
            cout<<dp[i][j]<<' ';
        }
        cout<<'\n';
    }
    //*/

    in.close();out.close();
    return 0;
}