Cod sursa(job #1375739)

Utilizator mihail.jianuJianu Mihail mihail.jianu Data 5 martie 2015 14:09:57
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<cstdio>
const int N=500;
const long long INF=1000000000001*500;
class Matrix{
    public:
        int x,y;
};
Matrix v[N+1];
long long d[N+1][N+1];
int n;
long long min2(long long a,long long b){
    if(a<b)
        return a;
    return b;
}
long long dp(int l,int r){
    if(d[l][r])
        return d[l][r];
    if(l==r)
        return 0;
    d[l][r]=INF+1;
    for(int m=l;m<r;m++)
        d[l][r]=min2(d[l][r],dp(l,m)+dp(m+1,r)+(long long)v[l].x*v[r].y*v[m].y);
    return d[l][r];
}
int main(){
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
    scanf("%d",&n);
    scanf("%d",&v[1].x);
    for(int i=2;i<=n;i++){
        int nr;
        scanf("%d",&nr);
        v[i-1].y=nr;
        v[i].x=nr;
    }
    scanf("%d",&v[n].y);
    printf("%lld",dp(1,n));
    return 0;
}