Cod sursa(job #1759583)

Utilizator Dan_RadulescuRadulescu Dan Dan_Radulescu Data 19 septembrie 2016 16:10:54
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE *f1=fopen("podm.in","r");
FILE *f2=fopen("podm.out","w");
int n,i,j,dist,k;
long long mat[505][505],inf=10000000000000000,v[505];
int main(){
    fscanf(f1,"%d",&n);
    for (i=1;i<=n+1;i++)
        fscanf(f1,"%lld",&v[i]);
    fclose(f1);
    for (i=1;i<=n;i++)
        mat[i][i+1]=v[i]*v[i+1]*v[i+2];
    for (dist=2;dist<=n-1;dist++){
        for (i=1;i<=n-dist;i++){
            j=i+dist;
            mat[i][j]=inf;
            for (k=i;k<j;k++)
                mat[i][j]=min(mat[i][j],mat[i][k]+mat[k+1][j]+v[i]*v[k+1]*v[j+1]);
        }
    }
    fprintf(f2,"%lld",mat[1][n]);
    fclose(f2);
    return 0;
}