Cod sursa(job #2501478)

Utilizator mihaicivMihai Vlad mihaiciv Data 29 noiembrie 2019 19:33:49
Problema Parantezare optima de matrici Scor 70
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream>
#include <fstream>
#include <map>
#include <vector>

#define NMAX 502
#define MOD 1000000007
//#define f cin


using namespace std;

ifstream f("podm.in");
ofstream g("podm.out");

int dp[NMAX][NMAX];

struct Matrice {
    int lin, col;
}m[NMAX];
int n;

int main() {
    f >> n;
    f >> m[0].lin;
    for (int i = 0; i < n; ++i) {
        f >> m[i].col;
        m[i + 1].lin = m[i].col;
    }

    for (int dist = 1; dist < n; ++dist) {
        for (int i = 0; i + dist < n; ++i) {
            int vmin = 1e9;
            for (int k = i; k < i + dist; ++k) {
                vmin = min(vmin, dp[i][k] + dp[k + 1][i + dist] + m[i].lin * m[k].col * m[i + dist].col);
            }
            dp[i][i + dist] = vmin;
        }
    }

    g << dp[0][n - 1];

	return 0;
}