Cod sursa(job #1059215)

Utilizator hevelebalazshevele balazs hevelebalazs Data 16 decembrie 2013 13:39:42
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <stdio.h>
#define fr(i,a,b) for(int i=a;i<b;++i)
#define ll long long
#define N 500
int a[N+1];
ll b[N][N];
int main(){
    freopen("podm.in","r",stdin);
    freopen("podm.out","w",stdout);
    int n;
    scanf("%i",&n);
    fr(i,0,n)scanf("%i",a+i);
    scanf("%i",a+n);
    fr(i,0,n)b[i][i]=0;
    fr(l,1,n){
        fr(i,0,n-l){
            int j=i+l;
            b[i][j]=-1;
            ll y=(ll)a[i]*(ll)a[j+1];
            fr(k,i,j){
                ll t=(ll)a[k+1]*y+b[i][k]+b[k+1][j];
                if(b[i][j]==-1||t<b[i][j])b[i][j]=t;
                }
            }
        }
    printf("%lli",b[0][n-1]);
    return 0;
    }