Cod sursa(job #1997766)

Utilizator RazorBestPricop Razvan Marius RazorBest Data 5 iulie 2017 12:05:41
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
using namespace std;

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

struct matrice
{
    int n, m;
} v[501];

int n, x;
long long a[501][501];

int main()
{
    fin>>n;
    fin>>v[1].n;
    for(int i = 1; i <= n; i++)
        {
            fin>>x;
            v[i + 1].n = v[i].m = x;
        }

    for(int len = 2; len <= n; len++)
    {
        for(int start = 1; start + len - 1 <= n; start++)
        {
            int stop = start + len - 1;
            int minim = 0x7fffffff;
            for(int k = 1; k < len; k++)
            {
                int p1 = a[start][start + k - 1];
                int p2 = a[start + k][stop];
                int p3 = v[start].n * v[start + k - 1].m * v[stop].m;
                if(p1 + p2 + p3 < minim) minim = p1 + p2 + p3;
            }
            a[start][stop] = minim;
        }
    }
    fout<<a[1][n];
    return 0;
}