Cod sursa(job #1424219)

Utilizator SpiriFlaviuBerbecariu Flaviu SpiriFlaviu Data 23 aprilie 2015 18:59:53
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <vector>
#include <set>
#include <queue>
#include <algorithm>
#include <string>
#include <fstream>
#include <cctype>
#include <iomanip>
#include <cmath>
#include <cstring>
#include <map>
#include <bitset>
#include <stack>
/*  //c++11
#include <unordered_map>
#include <unordered_set>
#include <tuple>
*/

using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");

int v[502];

long long bst[502][502];

int main()
{
    //freopen("1.in","r",stdin);
    //freopen("1.out","w",stdout);

    int n;
    fin>>n;
    for(int i = 0; i <= n; i ++)
        fin>>v[i];
    for(int i = 0; i <= n; i++)
        bst[i][i+2] = v[i]*v[i+1]*v[i+2];

    for(int l = 3; l <= n; l++)
        for(int i = 0; i+l <= n; i++)
        {
            int j = i + l;
            long long minim = 1LL<<60;
            for(int k = i+1; k < j; k ++)
                minim = min(minim,bst[i][k]+bst[k][j] + v[i]*v[k]*v[j]);
            bst[i][j] = minim;
        }
    fout<<bst[0][n];


    return 0;
}


//FILE!!!