Cod sursa(job #405055)

Utilizator nickyyLal Daniel Emanuel nickyy Data 27 februarie 2010 13:49:02
Problema Parantezare optima de matrici Scor 90
Compilator fpc Status done
Runda Arhiva educationala Marime 0.86 kb
const infile='podm.in';
  outfile='podm.out';
  maxn=503;
  infinit=1000000000000000000;
var m:array[0..maxn,0..maxn]of int64;
  p:array[0..maxn]of int64;
  n:longint;

 procedure citire;
 var i:longint;
   f:text;
 begin
   assign(f,infile); reset(f); readln(f,n);
   for i:=0 to n do read(f,p[i]);
   close(f);
 end;

 function min(x,y:int64):int64; inline;
 begin
   if(x>y)then min:=y
   else min:=x;
 end;

 procedure solve;
 var i,j,k,l:longint;
 begin
   for i:=1 to n do m[i,i]:=0;
   for l:=2 to n do
     for i:=1 to n-l+1 do begin
       j:=i+l-1; m[i,j]:=infinit;
       for k:=i to j-1 do
         m[i,j]:=min(m[i,j],m[i,k]+m[k+1,j]+p[i-1]*p[j]*p[k]);
       end;
 end;

 procedure afisare;
 var f:text;
 begin
   assign(f,outfile); rewrite(f);
   write(f,m[1,n]);
   close(f);
 end;

Begin
 citire; solve; afisare;
End.