Cod sursa(job #1654699)

Utilizator Aquaryus01Alex Benchea Aquaryus01 Data 17 martie 2016 13:04:55
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <cstdio>
using namespace std;

int n;
long long d[501],m[501][501];
void read()
{
    scanf("%d ",&n);
    for(int i=0; i<n*2; i++)
        scanf("%lld ", &d[i]);
}

void algoritm()
{
    for(int diag = 1; diag<=n-1; diag++)
    {
        for(int i = 1; i<=n-diag; i++)
        {
            int long long row = i;
            int long long col = diag + i;
            if(row!=col)
            {
                long long mini = 99999999999;
                for(int k=row; k<col; k++)
                {
                    long long x = m[row][k] + m[k+1][col] + d[row-1] * d[k] * d[col];
                    if(x<mini)
                        mini = x;
                }

                m[row][col] = mini;
            }
        }
    }

    cout<<m[1][n];
}

int main()
{
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
    read();
    algoritm();
    return 0;
}