Cod sursa(job #2763718)

Utilizator F.MatyiFischer Matyas Zsigmond F.Matyi Data 16 iulie 2021 13:03:50
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#include <climits>

using namespace std;

#define INF   100000000000000000LL
#define Min(a, b) ((a) < (b) ? (a) : (b))

long a[505], b[505][505];

int main()
{
    ifstream in("podm.in");
    ofstream out("podm.out");
    int n;
    in>>n;
    for(int i=0; i<=n; i++) in>>a[i];
    for(int i=1; i<=n; i++) b[i][i]=0;
    for(int i=1; i<=n-1; i++) b[i][i+1]=a[i-1]*a[i]*a[i+1];
    for(int w=2; w<=n-1; w++)
        for(int i=1; i<=n-w; i++){
            int j=w+i;
            b[i][j]=LONG_MAX;
            for(int k=i; k<=j-1; k++)
                b[i][j] = Min(b[i][j], b[i][k] + b[k + 1][j] + a[i - 1] * a[k] * a[j]);
        }
    out<<b[1][n];
    return 0;
}