Cod sursa(job #1014499)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 22 octombrie 2013 20:06:38
Problema Parantezare optima de matrici Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <vector>
#include <limits>

typedef unsigned long long ULL;
const ULL ULLINF = std::numeric_limits<ULL>::max();

int main(){
    std::ifstream fin("podm.in");
    std::ofstream fout("podm.out");

    unsigned n; fin>>n;

    std::vector<ULL> p(n+1);
    std::vector< std::vector<ULL> > m(n+1,std::vector<ULL>(n+1));

    for(unsigned i=0;i<=n;++i) fin>>p[i];

    for(unsigned i=1;i<=n;++i) m[i][i]=0;

    for(unsigned l=2;l<=n;++l)
        for(unsigned i=1;i<=n-l+1;++i){
            unsigned j=i+l-1;
            m[i][j] = ULLINF;

            for(unsigned k=i;k<j;++k){
                unsigned q = m[i][k] + m[k+1][j] + p[i-1]*p[k]*p[j];
                if(q<m[i][j]) m[i][j]=q;
            }
        }

    fout<<m[1][n]<<'\n';
}