Pagini recente » Cod sursa (job #397487) | Cod sursa (job #1554477) | Cod sursa (job #1006495) | Cod sursa (job #2821356) | Cod sursa (job #290553)
Cod sursa(job #290553)
#include<fstream.h>
#include<math.h>
ifstream in("piese.in");
ofstream out("piese.out");
int n,m,mat[500][500],x,y,is,js,pas;
int putere(int a,int b)
{ int sol=1,i;
for(i=0;(1<<i)<=b;i++)
{ if(((1<<i)&b)>0)
sol=sol*a;
a=a*a;
}
return sol;
}
void getf()
{ int i,j;
is=-1;js=-1;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(mat[i][j]==0)
{ is=i;js=j;
return;
}
}
int getpow(int is,int js)
{ int i,x,y;
x=m-js+1;
y=n-is+1;
for(i=8;i>=0;i--)
{ if((pow(2,i)<=x)&&(putere(2,i)<=y))
return i;
}
}
void fill(int k)
{ int i,j;
pas++;
for(i=0;i<putere(2,k);i++)
for(j=0;j<putere(2,k);j++)
mat[is+i][js+j]=pas;
}
int main()
{ int i,j;
in>>n>>m;
in.close();
getf();
while((is!=-1)&&(js!=-1))
{ getf();
fill(getpow(is,js));
getf();
}
out<<pas<<"\n";
for(i=1;i<=n;i++)
{ for(j=1;j<=m;j++)out<<mat[i][j]<<" ";
out<<"\n";
}
out.close();
return 0;
}