Cod sursa(job #764536)

Utilizator mi5humihai draghici mi5hu Data 5 iulie 2012 15:48:51
Problema Parantezare optima de matrici Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <stdio.h>
#include <limits.h>
using namespace std;
int n;
long long v[505];
long long a[505][505];

void citeste() {
     scanf("%d", &n);
     for (int i = 0; i <= n; i++) {
         scanf("%lld", &v[i]);
     }     
}

void rezolva() {
     long long min, val;
     for (int i = 1; i <= n; i++) {
         a[i][i] = 0;
     }
     for (int diag = 2; diag <= n; diag++) {
         for (int x = 1; x <= n - diag + 1; x++) {
             int y = diag - 1 + x;
             min = LLONG_MAX;
             for (int k = x; k < y; k++) {
                 val = a[x][k] + a[k+1][y] + v[x-1] * v[k] * v[y];
                 if (val < min) {
                    min = val;
                 }
             }
             a[x][y] = min; 
         }     
     }
}

void afisare() {
     printf("%lld\n", a[1][n]); 
}   

int main()
{
    freopen("podm.in", "r", stdin);
    freopen("podm.out", "w", stdout);
    
    citeste();
    rezolva();
    afisare();
    
    return 0;
}