Cod sursa(job #1429519)

Utilizator alexandru.jercaianuJercaianu Alexandru alexandru.jercaianu Data 6 mai 2015 16:23:27
Problema Parantezare optima de matrici Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.19 kb
#include<iostream>
#include<algorithm>
#include<fstream>
#include<vector>
#include<limits>
using namespace std;

ifstream fin("podm.in");
ofstream fout("podm.out");

int N;
vector<pair<int, int>> m;
int d[1000][1000];

int podm() 
{
    for (int i = 0; i <= N + 1; i++) {
        for (int j = 0; j <= N + 1; j++) {
            d[i][j] = numeric_limits<int>::max() / 2; 
        }
    }
    for (int i = 1; i < N; i++) {
        pair<int, int> m1, m2; 
        m1 = m[i - 1];
        m2 = m[i];
        d[i - 1][i] = m1.first * m1.second * m2.second; 
    }

    for (int i = 0; i < N; i++) {
        for (int j = 2; j < N; j++) {
            pair<int, int> m1, m2, m3, m4;
            if (i + j < N) {
                m1 = m[i + j];
                m2 = m[i];
                m3 = m[i + j - 1];
                m4 = m[i + 1]; 
                d[i][i + j] = min(d[i][i + j - 1] + m2.first * m1.first * m1.second, d[i + 1][i + j] + m2.first * m2.second * m1.second);  
            }
        }
    }
    return d[0][N - 1];
}

int main()
{
    fin >> N;
    int x, y;
    fin >> x;
    for (int i = 0;i < N; i++)  {
        fin >> y;
        m.push_back(make_pair(x, y));
        x = y;
    }
    fout << podm() << endl;

}