Cod sursa(job #3201669)

Utilizator david_nicolescuNicolescu David Stefan david_nicolescu Data 9 februarie 2024 13:49:36
Problema Parantezare optima de matrici Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h>
#include <stdlib.h>
#define N 500
#define INF (1LL << 60)

int dim[N+1];
long long nr[N+1][N+1];

long long min(long long x, long long y)
{
    return (x < y ? x : y);
}

int main()
{
    FILE *in, *out;
    in = fopen("podm.in", "r");
    out = fopen("podm.out", "w");
    int n;
    fscanf(in, "%d", &n);
    for (int i = 0; i <= n; i++)
    {
        fscanf(in, "%d", &dim[i]);
    }
    for (int i = n; i >= 1; i--)
    {
        nr[i][i] = 0;
        for (int j = i + 1; j <= n; j++)
        {
            nr[i][j] = INF;
            for (int k = i; k < j; k++)
            {
                nr[i][j] = min(nr[i][j] , nr[i][k] + nr[k+1][j] + (long long)dim[i-1]*dim[k]*dim[j]);
            }
        }
    }
    fprintf(out, "%lld\n", nr[1][n]);
    fclose(in);
    fclose(out);
    return 0;
}