Pagini recente » Istoria paginii runda/3_martie_simulare_oji_2024_clasele_11_12 | Cod sursa (job #171064) | Clasament juniori_1 | Teoria jocurilor | Cod sursa (job #1500016)
#include <iostream>
#include <fstream>
#define nmax 505
#define inf 9999999
using namespace std;
ifstream fin("podm.in");
ofstream fout("podm.out");
struct element
{long x,y;};
element a[nmax];
element rez[nmax][nmax];
long sol[nmax][nmax];
int main()
{long n,x,y,i,minim,poz,k,j,nr;
fin>>n;
fin>>x;
for(i=2;i<=n+1;i++)
{fin>>y;
a[i-1].x=x;
a[i-1].y=y;
x=y;
}
for(i=1;i<=n;i++)
{sol[i][i]=0;
rez[i][i]=a[i];}
for(nr=2;nr<=n;nr++)
for(i=1;i<=n-nr+1;i++)
{j=i+nr-1;
minim=inf;poz=0;
for(k=i;k<j;k++)
{
long val=(rez[i][k].x * rez[i][k].y * rez[k+1][j].y);
if(sol[i][k]+sol[k+1][j]+val<minim)
{minim=sol[i][k]+sol[k+1][j]+val; poz=k;}
}
sol[i][j]=minim;
rez[i][j].x=rez[i][poz].x;
rez[i][j].y=rez[poz+1][j].y;
}
fout<<sol[1][n];
}