Pagini recente » Cod sursa (job #1430533) | Cod sursa (job #1265908) | Cod sursa (job #120333) | Cod sursa (job #1222434) | Cod sursa (job #1428953)
#include<fstream>
using namespace std;
ifstream fin("suma4.in");
ofstream fout("suma4.out");
int a[55][55][55];
int n,i,j,k,nr,ii,x,niv;
int b[55][55][55];
void set(){
for(niv=1;niv<=k;niv++){
for(i=1;i<=niv;i++){
for(j=1;j<=niv;j++){
b[i][j][niv]=200000000;
}
}
}
return ;
}
short c[3][55*55*55];
int di[]={ 0,0,1,1};
int dj[]={ 0,1,0,1};
int dn[]={ 1,1,1,1};
int min(int a,int b){
if(a>b) a=b;
return a;
}
void LEE(){
int p=1;
int u=1;
c[0][1]=1;
c[1][1]=1;
c[2][1]=1;
b[1][1][1]=a[1][1][1];
int ic,jc,nc,iv,nv,jv,d;
while(p<=u){
ic=c[0][p];
jc=c[1][p];
nc=c[2][p];
for(d=0;d<=3;d++){
iv=di[d]+ic;
jv=dj[d]+jc;
nv=dn[d]+nc;
if(iv>0 && iv<=nv && jv>0 && jv<=nv && nv<=k){
u++;
c[0][u]= iv;
c[1][u]= jv;
c[2][u]= nv;
b[iv][jv][nv] = min( b[ic][jc][nc]+a[iv][jv][nv] , b[iv][jv][nv] );
}
}
p++;
}
return ;
}
int val(){
int i,j,minim=2000000000;
for(i=1;i<=k;i++){
for(j=1;j<=k;j++){
minim=min(minim,b[i][j][k]);
}
}
return minim;
}
int main(){
fin>>n;
i=1;
j=1;
k=1;
nr=1;
for(ii=1;ii<=n;ii++){
fin>>x;
a[i][j][k]=x;
nr++;
if(nr>k*k){
k++;
nr=1;
i=j=1;
}else{
j++;
if(j>k){
i++;
j=1;
}
}
}
k--;
fout<<k<<" ";
set();
LEE();
fout<<val()<<"\n";
return 0;
}