Cod sursa(job #2922360)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 8 septembrie 2022 01:46:08
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 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){
                ULL 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';
}