Cod sursa(job #1100261)

Utilizator roxyroxy2011Luca Roxana roxyroxy2011 Data 6 februarie 2014 19:11:26
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>

using namespace std;

ifstream cin("podm.in");
ofstream cout("podm.out");

int n,d[501];long long nrmin[501][501];
void read();
void solve();

int main()
{
    read();
    solve();
    cout<<nrmin[1][n]<<'\n';
    cin.close();cout.close();
    return 0;
}

void read()
{
    cin>>n;
    for (int i=0;i<=n;i++)
        cin>>d[i];
}

void solve()
{
    for (int i=1;i<n;i++)
        nrmin[i][i+1]=(long long)d[i-1]*d[i]*d[i+1];
    for (int lg=3;lg<=n;lg++)
        for (int i=1;i<=n-lg+1;i++)
    {
        int j=i+lg-1;nrmin[i][j]=1000000000000000ll;
        for (int k=i;k<j;k++)
            if (nrmin[i][j]>nrmin[i][k]+nrmin[k+1][j]+(long long)d[i-1]*d[k]*d[j])
                nrmin[i][j]=nrmin[i][k]+nrmin[k+1][j]+(long long) d[i-1]*d[k]*d[j],nrmin[j][i]=k;
    }
}