Cod sursa(job #1111265)

Utilizator koroalinAlin Corodescu koroalin Data 18 februarie 2014 19:14:26
Problema Parantezare optima de matrici Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#define NMAX 502
#define DMAX 10002
#define INF 1000000000
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
int d[NMAX],n;
long long int nrmin[NMAX][DMAX];
void citire();
int main()
{
    int i,lg,minim,k,aux,j;
    citire();
    for (i=1; i<=n; i++)
    {
        nrmin[i][i]=0;
        nrmin[i][i+1]=d[i-1]*d[i]*d[i+1];
    }
    for (lg=3; lg<=n; lg++)
        for (i=1; i<=n-lg+1; i++)
        {
                j=i+lg-1;
                minim=INF;
                for (k=i; k<j; k++)
                {
                    aux=nrmin[i][k]+nrmin[k+1][j]+d[i-1]*d[k]*d[j];
                    if (aux<minim) {minim=aux; nrmin[j][i]=k;}

                }
                if (minim!=INF)
                nrmin[i][j]=minim;
        }

    fout<<nrmin[1][n];
    return 0;
}
void citire()
{
    int i;
    fin>>n;
    for (i=0; i<=n; i++) fin>>d[i];
}