Pagini recente » Cod sursa (job #1313368) | Cod sursa (job #1727496) | Cod sursa (job #2344616) | Cod sursa (job #2373488) | Cod sursa (job #380196)
Cod sursa(job #380196)
#include <fstream>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#define min(a,b) ((a)<(b)?(a):(b))
using namespace std;
typedef unsigned long long u64;
typedef struct matrix {
u64 l,c;
} matrix;
unsigned short N;
u64 PD[500][500];
matrix S[500];
ifstream f("podm.in");
ofstream g("podm.out");
int main() {
f>>N;
unsigned short i,j,k,t;
u64 d[501];
for(i=0;i<=N;++i) f>>d[i];
for(i=0;i<N;++i) S[i].l = d[i], S[i].c = d[i + 1];
for(t = 1; t < N; ++t)
for(i = 0,j = i + t; j < N; ++i,++j) {
PD[i][j] = 0xFFFFFFFFFFFFFFFFll;
for(k = i; k < j; ++k) {
PD[i][j] = min(PD[i][j],PD[i][k] + PD[k+1][j] + S[i].l*S[k].c*S[j].c); //S[k].c==S[k+1].l
}
}
//for(i = 0;i < N; ++i) g<<S[i].l<<" "<<S[i].c<<"\n";
g<<PD[0][N - 1];
f.close();
g.close();
return 0;
}